学习&&转载文章:隐私计算安全基座-数据库安全

数据安全

用数据生命周期的全链路思考,可以得出如下的结论:

  • 数据存储态安全:对数据的存储安全负责,保障数据的静存储态安全,不泄露。
  • 数据传输态安全:对数据的转移安全负责,保障数据的转移态安全,不泄露。
  • 数据计算态安全:对数据的动态计算的安全负责,保障数据的运行态安全,不泄露输入与运算中间结果等。

传统的安全是主要保护数据的存储态与传输态的安全,但是隐私计算正是扩展了数据计算态的安全能力,如此三态合一,即可保障数据的全链路的生命周期安全。

数据库安全

攻击方式

常见的数据库攻击手段包括SQL注入、拖库、洗库、撞库等

窃取信息:拖库;对窃取来的信息处理和使用:洗库、撞库

SQL注入

SQL注入就是通过把恶意的SQL命令插入到Web进行表单提交,并且达到欺骗服务器执行恶意的SQL命令的目标。这种情况会发生比较严重的安全问题隐患,造成信息的泄露、篡改与丢失等风险。

以下实例中,输入的用户名必须为字母、数字及下划线的组合,且用户名长度为 8 到 18 个字符之间

if (preg_match("/^\w{8,18}$/", $_GET['username'], $matches))
 {
  $result = mysqli_query($conn, "SELECT * FROM users 
              WHERE username=$matches[0]");
 }
 else
 {
  echo "username 输入异常";
 }

在没有过滤特殊字符的情况下,出现的恶意的SQL情况:

// 设定$name 中插入了恶意的SQL语句
 $name = "Alice'; DELETE FROM users;";
 mysqli_query($conn, "SELECT * FROM users WHERE username='{$name}'");

以上代码语句中,我们没有针对变量username进行过滤与限制,所以可以在变量username中插入了恶意的SQL语句,后果是将删除users表中的所有数据。

所以我们对这些用户的数据需要进行严格的验证。我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行严格的判别处理

如何预防?

  • 对于用户的输入,需要进行校验:对用户的输入进行校验,方式是可以通过正则表达式、限制长度,同时对单引号等特殊字符进行转换等等。
  • SQL的生成机制:不要进行SQL的动态拼装,应该使用参数化的SQL或者直接使用存储过程
  • 数据库的权限控制:不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接,做到权限最小化
  • 数据库存储信息加盐:不要把机密信息直接存放,加密或者hash掉密码和敏感的信息,进行数据的脱敏处理。

拖库

拖库就是指黑客通过各种手段,非法获取据库中的敏感信息,由于这些信息一般包含敏感信息,例如用户名、密码、姓名、证件、电子邮箱、电话、住址、金融信息等,一旦泄露将造成非常大的损失。

那么拖库是怎么做的呢?主要分为下面的三部曲:

  1. 「找漏洞」:黑客使用技术手段对网站进行扫描,查找漏洞,例如SQL注入、文件上传漏洞等。
  2. 「获权限」:通过上面找到的漏洞,然后建立一个Web Shell,进而获取操作系统的相关权限;
  3. 「导数据」:通过上面获取的权限,通过网络命令或者安装相关软件,将需要的数据导出,并且拉取、存储到本地计算机。

综述整个过程通过扫描探查获取系统方面的漏洞,进而获取系统权限,进而打通一个数据传输的非法通路,进而获取数据。在黑客完成拖库以后,就要干大事了,下一步操作叫做“洗库”。

洗库

黑客在完成拖库以后,将会取得大量的用户数据,然后黑客会通过一系列的技术手段,并且结合黑色产业链将有价值的用户数据进行变现,这个步骤称作“洗库”

  1. 「游戏账号」:获取的用户游戏账号,包含账号本身、虚拟货币、游戏装备等,通过交易进行变现,也就是俗称的“盗号”。
  2. 「金融账号」:获取的用户金融账号,比如支付宝,网银,信用卡,股票的账号和密码,可以用来进行金融诈骗和犯罪。
  3. 「广告投放」:相对于游戏账号与金融账号信息,剩下的用户信息相对利益较小,但是这部分信息数量十分庞大,可以用作广告投放。比如对信息进行简单分类,分成如学生、蓝领、白领、金领等,并且发送广告、垃圾短信,进行电商营销等,并且有专门的广告投放公司,花钱购买这些分门别类的信息。

综述整个过程通过拖库获取的庞大的数据,对于数据进行层级划分,针对各种不同价值的数据进行分别处理,非法获取价值。那么数据经历了拖库、洗库,接下来,还有剩余价值,这就是“撞库”。

撞库

在经历了上面的洗库环节,黑客已经获取了直接的收益,那么是否还有其他的剩余价值可以获利呢?

由于互联网绝大多数的用户在不同网站使用的是相同的帐号密码的习惯,所以黑客可以通过获取的在A网站的用户账户信息尝试登录B网址,这就可以理解为撞库攻击

具体手段:撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试遍历并且批量登陆其他网站,得到一系列可以登录的用户,进行获取更多的网站的用户信息

预防

  • 「对于网站来说,我们要做的是提高黑客攻击的门槛」
  1. 数据加密:密码等敏感信息在数据库中的存储应该考虑拖库的风险,进行脱敏处理例如MD5等方法;
  2. 流程优化:设置合理的登录业务逻辑,如每一次登录请求更新为请求验证码,登录错误信息返回优化,避免明确告知错误信息;并且可以采用交互式验证码技术,有效防范工具软件批量操作;
  3. 网络防控:基于IP防控,对短时间内大量请求登录接口的IP进行监控告警甚至封禁;
  4. 设备防控:移动端应考虑设备指纹特征,当识别到某一账号设备指纹发生变化时即有可能被撞库,可引入更高级的身份验证方式;
  5. 分析建模:基于大数据分析的用户行为模型和策略,利用特征库识别发现异常请求。
  • 「对于普通用户而言,我们要做的就是提高风险意识」
  1. 密码分场景:不要在多个场合使用同一个密码,为不同的场景使用不同密码;
  2. 密码多变化:不要长期使用固定密码,应定期进行修改;
  3. 密码复杂性:不要使用弱密码(长度、特殊字符、大小写),比如123456;
  4. 密码管理:采用安全的密码管理工具进行个人密码管理;