我正在使用一个登录失败的身份验证系统。
如果用户登录失败,数据库中的尝试次数会递增,如果达到定义的限制,PHP会将会话captcha变量设置为true。
因此,当用户(或垃圾邮件机器人)再次访问登录页面时,将显示一个captcha表单,这要归功于会话变量
但由于垃圾邮件机器人最终可能会删除会话cookie并重试,因此这可能无效。
我应该使用数据库解决方案吗?你将如何实现这一点(有/没有数据库)?
发布于 2012-09-02 19:40:14
垃圾邮件机器人可以相当容易地绕过会话限制,因此它必须在数据库中完成才能有效。垃圾邮件机器人还可以在每次请求时更改其IP地址,尽管这很难实现。
您必须在users表中放置一个从0开始的登录尝试字段,当他们输入错误的密码时,将该字段递增,当他们成功登录时,将其重置为0。当有人尝试以用户身份登录时,登录尝试次数超过5次,您会将他们带到另一个页面,其中包含验证码,他们必须正确输入该验证码(即使密码错误)。
发布于 2012-09-02 19:40:06
我只需记录用户的会话变量,然后计算表单为IP地址提交了多少次。
发布于 2012-09-02 20:09:58
在我看来,当他尝试登录你的页面时,只需要使用用户名,如果他/她尝试登录失败,那么将用户名及其IP地址存储在Login_attempts表中。增加失败尝试列,并检查它是否大于阈值,例如5,如果失败,则添加验证码,并并排检查IP没有随着每次尝试而改变,例如,对于1分钟,IP地址应该保持不变如果失败,则登录尝试失败。
为了更好地使用NOSQL or memcache从数据库中检索快速数据。
https://stackoverflow.com/questions/12235619
复制相似问题