首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。
1、 前提
执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标。比如易用性、成本、还有功能。
2、 防止蛮力攻击登陆的基本要求
一些基本要求,写下来,以后也可以参考。
1. 加一个图片验证码,加一个简单的图片验证码,我个人估计就能屏蔽掉90%的蛮力攻击者。我们公司购买了hp的专业黑客检验工具;如果系统要进行安全扫描,第一件事情就是要屏蔽验证码功能…
2. 对登陆机制、修改密码功能、忘记密码等功能进行整体考虑,不要有所遗漏;
3. 尽量使用无法预测的用户名,并且阻止用户名的枚举,给完全盲目的蛮力攻击设置障碍(但是现在手机号、邮箱、QQ号码这三个,已经成为了大部分系统的账号…)
4. 对一些安全性要求很高的系统(银行,支付平台等),在检测到少数几次(3、5次)登陆失败后应该立即禁用该用户。最好能够通过一些非常规的方式激活,比如给呼叫中心打电话等(成本太高,而且相对不友好);或者将账号冻结一段时间(30分钟或者2小时,或者当天);
5. 如果采取账号冻结的方式,最好也不要把这种方式告诉用户(但是不告诉用户,用户万一密码输错几次之后,也很痛苦,用户不知道发生了什么…)