探讨系统撞库该如何预防

系统撞库,则是非法用户通过其他平台泄漏的账号密码来登录目标平台的行为。

比如,当年著名的 CSDN 账号密码泄漏的事故。很多搞黑产的人拿着这批账号,然后去其他平台写程序模拟登录。这其实是有一定概率成功的。因为,我们的大多数用户都习惯把所有平台账号密码设置为一样。这就给黑道用户可乘之机。

其次,还有一种撞库不是通过已泄漏的账号密码来硬解。

我们很多用户会把密码设置为 123456000000666666 等密码。当非法用户来撞库的时候,只需要把每个账号可能出现的密码组合进行一一登录尝试。总会有一些账号会被破解的。

基于如上这种撞库,我们到底该如何解决呢?

一、业务严谨性

黑产非法用户通过撞库无非是获取更多用户的隐私信息,或者通过平台漏洞给用户造成经济损失。那么,我们知道了黑产用户的这点“小心思”之后,剩下的就是找到对应的方法堵住这两条通道。

(1)修改密码

修改密码的时候,我们验证用户的手机验证码。毕竟,现在很多平台已经强制要求绑定手机号。一来是法律有要求。二来是手机号做账号就不需要再作一个绑定手机号的功能。并且自己的手机号容易记录。

通过如此操作,非法用户无法更改密码。

(2)重要操作验证手机号验证码

有了第一步的依托。我们就可以在适当的时候根据业务的重要性验证手机号验证码才能操作。这样,即便黑产用户知道了密码又有如何?

(3)异地登录提醒

我们登录的时候,记录用户的 IP 地址。然后,根据用户的 IP 得到地址位置编码。下次登录的时候,如果地址位置编码发生变化。说明出现了异地登录。此时,我们通过用户的各种联系方式发送提醒,让用户修改登录密码。

(4)登录失败次数限制

比如,一个账号每天登录连续失败 5 次就锁定。这样即使这个黑产非法用户有千万种可能性的密码组合。依然无法有效破解。

(5)隐私信息 * 号化处理

比如,用户的银行卡号。像微信、支付宝。它会把用户的卡号信息 * 星号化处理。像招商银行、中国银行等。想要查看完整的卡号密码输入短信验证码。

二、IP 限制

经过上面步骤之后。我们依然不能保证撞库。只能保证尽量减少撞库带来的损失。

比如,一个 IP 每个账号试 5 次。那么,依然可以把所有的账号都试完。那这是不能接受的。所以,我们可以考虑把特殊位置的操作记录写入日志。
记录的信息如下:

IP、地区编码、日期时间、账号
"122.112.10.9","200000","2019-06-04 12:05:08","13812345678"

然后,我们写一个脚本定时去分析该脚本。触碰了封禁条件。就把这个 IP 写入 Redis 。并设置一个封禁时间。

以登录为例的撞库为例的封禁条件

  • 当天超过 10 次登录失败,则封禁 24 小时登录操作。
  • 连续 3 天超过 10 次登录失败,则封禁 30 天。(这明显就是搞事。毕竟,担心这个 IP 是动态 IP,只封 30 天)

WAF 使用

如果不想自己写这些乱七八糟的条件。可以使用成熟的 WAF 系统。这样,直接在 WAF 系统当中配置,可以智能识别很多的攻击问题。关于 WAF 我们这里不展开讲。目前我只接触过阿里云的 WAF。觉得还不错。就是有点贵哈~~~

博主 2011 年创建了一个《PHP 初学者官方群》,目前群成员 500 人左右。群号:168159147。为了防止广告,设置为付费入群。欢迎大家加入讨论技术!

标签: 无

发表评论: