
服务器
常见的手段有这么几种,而实际情况往往是多种手段综合运用:其一,最为简单粗暴的当属错误或频率门限法。例如,在固定的1分钟内,如果同一IP出现5次错误尝试,就直接封禁该IP。不过这种方法容易误伤到忘记密码的用户。其二,tarpit(焦油坑)。它实际上是设置登录延迟,不管输入正确与否,
服务器验证API的返回时间都固定为2.5秒,这就增加了尝试登录的时间成本。其三,工作量证明(Proof of Work)。通常要求
客户端携带一个cookie,这个cookie的内容很容易验证(基本不怎么消耗CPU),但却很难生成。这种算法和
加密货币中广泛应用的算法类似,目的在于消耗登录者的CPU资源,提高其尝试成本。其四,人机验证(captcha)。并不一定要一开始就弹出人机验证框,可以与第一种手段配合,在触发某些门限时弹出。如果随时弹出的话,用户体验就会很差。其五,2FA(双因素认证)。不管是短信、邮件、APP还是硬件token类型的2FA都可以。这种方式安全性最高,但使用起来比较麻烦,经常需要登录的用户可能不太喜欢。其六,试用登录页面或者敏感资源授权。登录成功后,也不能直接访问受保护的敏感资源,在访问相关敏感资源或者真正的网站功能时,需要其他验证手段,一般会结合2FA。这对防范字典攻击效果较好。其七,用户行为分析。比如一个用户通常都在
北京登录,突然跑到芬兰登录,然后1分钟后又回到
北京,这时可能需要对比
VPN的IP库,如果用户没有使用
VPN,那就得加强防范措施了,例如采用2FA或者人机验证。在实际应用中,要灵活运用这些手段,依据不同的条件采取不同的措施,常常还会结合黑白IP名单等内容,甚至运用一些模式或者
AI手段来识别
客户端等。总结目标就是要让正常用户登录不太麻烦,而让机器人或者黑客登录变得非常困难。