php - 多次登录失败后启用验证码 - 如何实现?

标签 php security authentication captcha

我正在处理登录失败的身份验证系统。
如果用户登录失败,数据库中的尝试次数会递增,如果达到定义的限制,PHP 会将 session 验证码变量设置为 true。
因此,当用户(或垃圾邮件机器人)再次获得登录页面时,由于 session 变量,将显示一个验证码表单

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

我应该改用数据库解决方案吗?您将如何实现这一点(使用/或不使用数据库)?

最佳答案

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

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

关于php - 多次登录失败后启用验证码 - 如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235619/

相关文章:

php - 如何在进程完成时执行操作,同时有多个进程正在运行

linux - Linux下的签名可执行文件

php - SSL 和非安全资源

django - 在 cookie 中保存身份验证 token (Django Rest Framework + React)

PhpSpreadsheet 读取 php 中的多个文件

php - 如何在 SHTML 页面中包含 PHP 文件?

ruby-on-rails - 设计中的 ArgumentError::RegistrationsController#new 错误的参数数量(2 代表 0..1)

java - 无法使用 java 的凭据访问网页

php - 替换查询的正则表达式

linux - 我的环境变量对系统上的其他用户安全吗?