首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在几次登录失败后启用Captcha -如何实现?

问在几次登录失败后启用Captcha -如何实现?
EN

Stack Overflow用户
提问于 2012-09-02 19:32:22
回答 3查看 4.1K关注 0票数 5

我正在使用一个登录失败的身份验证系统。

如果用户登录失败,数据库中的尝试次数会递增,如果达到定义的限制,PHP会将会话captcha变量设置为true。

因此,当用户(或垃圾邮件机器人)再次访问登录页面时,将显示一个captcha表单,这要归功于会话变量

但由于垃圾邮件机器人最终可能会删除会话cookie并重试,因此这可能无效。

我应该使用数据库解决方案吗?你将如何实现这一点(有/没有数据库)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-02 19:40:14

垃圾邮件机器人可以相当容易地绕过会话限制,因此它必须在数据库中完成才能有效。垃圾邮件机器人还可以在每次请求时更改其IP地址,尽管这很难实现。

您必须在users表中放置一个从0开始的登录尝试字段,当他们输入错误的密码时,将该字段递增,当他们成功登录时,将其重置为0。当有人尝试以用户身份登录时,登录尝试次数超过5次,您会将他们带到另一个页面,其中包含验证码,他们必须正确输入该验证码(即使密码错误)。

票数 6
EN

Stack Overflow用户

发布于 2012-09-02 19:40:06

我只需记录用户的会话变量,然后计算表单为IP地址提交了多少次。

票数 0
EN

Stack Overflow用户

发布于 2012-09-02 20:09:58

在我看来,当他尝试登录你的页面时,只需要使用用户名,如果他/她尝试登录失败,那么将用户名及其IP地址存储在Login_attempts表中。增加失败尝试列,并检查它是否大于阈值,例如5,如果失败,则添加验证码,并并排检查IP没有随着每次尝试而改变,例如,对于1分钟,IP地址应该保持不变如果失败,则登录尝试失败。

为了更好地使用NOSQL or memcache从数据库中检索快速数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12235619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档