我有一个要求显示谷歌reCaptcha在第二次尝试登录屏幕。
但坦率地说,我认为这不是阻止机器人的方法。
因为在服务器端,我无法判断这是第一次还是第二次登录尝试,除非用户选择在请求的同时发送某种cookie,以便识别他尝试的登录次数--因此HTTP协议在本质上是无状态的。
我相信,机器人发送一些cookie并不愚蠢,因为它会让服务器知道关于它们的任何信息。
我听说过一些复杂的解决方案,比如在登录页面加载运行js脚本来生成一些id,然后将这个id发送到服务器并让服务器检查这个id,但是仍然有一个足够智能的机器人可以模拟所有这些操作。但这不是我要问的。
有什么建议吗?
发布于 2017-01-25 19:20:53
在会话中或cookie中存储失败登录数不起作用。正如您所指出的,攻击者只需删除cookie即可。一个更好的方法是保持服务器上失败的登录尝试次数,与所使用的用户名或IP地址相对应。如果有人输入了错误的凭据,您将为该IP地址或服务器上的用户名增加计数器。这样,客户端就不能改变它。
发布于 2017-01-25 20:31:46
没有什么能完全阻止机器人试图登录,这不是目标。
目标是将这些机器人尝试的次数限制在不太可能正确猜测的水平上,即使用户选择了一个相对较弱的密码。
显然,您不能期望机器人会向您发送cookie,因此需要一些其他形式的检查,可能是每个IP地址的限制、每个用户名的限制以及不同大小IP块的限制的组合。
https://security.stackexchange.com/questions/149425
复制相似问题