最近发现有大量的 IP 在刷我们网站的登录页面,是通过代理 + 模拟正常用户登录(包含 UA、session 等)的方式来验证用户名密码的有效性。(我猜他应该是有一个很大的库,我抓了其中一台机器一晚上的数据就要 500w+)刚开始以为封了 IP 就可以了,但是发现封了 IP 也没用。他的代理 IP 地址一直在变。因为他模拟的是正常的用户请求,研发也没有办法。
请教大家,碰到这样的情况应该怎么应对和防范。
6 个回答
Neeao,6年互联网信息安全从业经验。
这个在安全圈子里叫撞库,即通过已有的账号密码到其它网站去尝试。
而针对撞库的防范是一个人机对抗的过程,需要通过一些手段来防止通过程序来扫描,但是这些手段也不能影响正常的用户体验,说说经常用到的一些方法:如@tombkeeper 所说,最简单的方式就是增加一个图片验证码,当然对于现在图片验证码的破解程序也是越来越厉害,网上商业的开源的验证码破解工具一大堆,如果做图片验证码来防范的话,就要考虑一个问题,如何防止图片验证码被破解。对于防止验证码破解的话,可以适当增加验证码生成的强度,业内做的比较好的验证码,可以参考下淘宝的、百度贴吧的中文验证码也不错。另外一种方式就是自动识别异常IP,如果机器扫描的话,肯定会有一些特征能被你抓取到,比如:单位时间内操作次数,比如1分钟尝试登录超过100次、正常用户不可能有这么大的频度的;1分钟内尝试登录错误账号超过一定次数;其它的自己扩展。对于异常的IP,整理一个非常严格的库,甚至直接禁止这些IP访问网站,一个一个手工添加肯定很累,程序对程序,应该没问题。黑客使用的代理再多,总归是有限的。刚在微博有同学说遇到专业的撞库,黑客黑掉了整个市的dhcp,分配了几十个1-254的c段来扫,每个IP仅仅尝试1-3次,这种低频度的撞库确实不好防护。在这里提出一个简单的思路,比如真的是这种的话,那么针对这个市的IP设计一个黑名单,单独的策略。
另外一种思路是用户账号被撞后的保护,比如判断下用户的登录IP,是否在常用的地区,如果不是,直接锁定账号,让用户通过手机、邮箱等手段来解锁,这方面做的比较好的可以参考腾讯和淘宝。