php - 限制登录试图防止 BFA

标签 php mysql brute-force login-attempts

我实现了一个登录系统,在 3 次尝试失败后(使用 $_SESSION 变量)在用户计算机上创建一个 cookie,该 cookie 在 10 分钟后过期。现在我知道这肯定是不够的,因为他们可以删除 cookie。现在,我想知道的是,当我实现一个表来通过 IP 和用户名组合捕获不正确的登录时,该表何时被清除?当用户在阻塞时间到期后成功登录?

假设此表填充了 1000 个条目,我如何自动清除它?表的结构是什么?

我建议:
4 个字段: ID、IP、用户名(这将是他们的电子邮件地址)、block_time(用户可以再次登录的时间)?

最佳答案

您可以在首次登录失败后创建记录,登录成功后删除记录。
第二种方法是创建“修改过的”列,并使用一些 php-cron 脚本清理它。

INSERT INTO user_logins(user_hash, time) VALUES(?,?)
ON DUPLICATE KEY UPDATE time = now()

当然,您的主键将是 user_hash。

关于php - 限制登录试图防止 BFA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139654/

相关文章:

php - 我如何查询随机行并跟踪已查询的内容(这是重要的部分)

php - 如果用户尝试登录多次,如何触发?

php - 我可以计算每个 MySQL Select/Union 有多少结果吗

security - 针对 Web 应用程序的密码列表攻击的最佳实践

java - 分而治之 : computing the time elapsed

php - MySQL 查询表单数据

php - 在 Laravel Forge 上卸载 MySQL 而不删除 HHVM

mysql - 连接多个表,不重复行

php - 如何仅从表中获取已排序的更新行?

algorithm - 遍历给定大小的所有树