MichaelFreeman 2014-07-17
1.一个账户在一段时间内的登录失败次数,或者检测某一个IP地址在一段时间内的登录行为次数。检测到此类行为后,向客户端返回验证码,这样可以有效缓解暴力破解攻击
2.在用户注册时,可以收集到用户填写的个人资料,如果发现用户使用了诸如:用户名,邮件地址,生日,电话号码之内的个人信息作为密码,则应当立即提示。
3网站页面上隐藏每个用户的ID,只显示昵称
4.当用户登路错误返回时,先添加一个登录用的验证码,以避免脚本或扫描器的自动登录
5.当发现某一IP地址存在恶意行为后,对IP地址的历史记录追加处罚
6.取回密码流程
6.1 在进行密码修改的时候,进行再次密码认证
6.2 忘记密码
6.2.1 用户设定的安全问题
6.2.2 用户手机短信
6.2.3 用户邮箱
6.2.4 以上不一定是本人操作,这时我们需要对用户信息进行逐一核对,以验证用户身份确实本人
比如: 用户曾经使用过的密码;
用户曾经曾经登录过时间,地点;
用户曾经在站内发表过,又删除了的文章等。
这些信息可以称为用户的“基因“,这些信息越详细,就越能准确的识别是否本人。这个不算更好的办法,只能具体问题具体分析。
7.垃圾注册账户
批量,自动化:
7.1同一个客户端会发起请求同样的URL地址
7.2页面和页面之间的跳转流程可能会不正常(页面1——页面3,不像正常用户行为)
7.3同一个客户端两次请求之间的时间间隔短
7.4有时客户端的UserAgent看起来不像浏览器
7.5客户端可能无法解析JavaScript 和 Flash
7.6在大多数情况下验证码是有效的
如果再从垃圾注册和垃圾消息的内容去分析,又可以发现很多不同特点
7.7 注册时填写的用户名可能是随机生成的字符串,而非自然语言
7.8不同账户的资料介绍可能同样的内容,在需要打广告尤其如此
7.9可能含有一些敏感词,比如政治敏感词和商业广告词
7.10可能出现文字的变形,比如半角变全角,或者类似地把”强“拆成”弓虽“
8.对重要信息使用”掩码“ 例如 43022319850215xxxx2 1800252xxx7
9通过分析网络连接,频率,客户端信息,最终进行判断哪个请求是坏的