php - 防止许多用户共享 IP 地址的暴力攻击

标签 php mysql pdo brute-force

我和我的团队正在用 PHP5.5 编写一个网络应用程序,其中的数据库(除其他外)具有典型的用户名和用于用户身份验证的 passhash 查找。

我们正在寻找防止超过相对数量(例如 8)的错误登录的方法。这是一个面向大约 7000 名学生的网络应用程序,当他们位于 4 个校园网络之一时,他们将共享相同的传出 IP 地址。目前,失败的登录记录在表中作为时间戳和 IP 地址,以及尝试的用户名(这是外键)或 NULL(如果用户名不正确)。

我们已经想到了一些方法,但都存在安全漏洞或问题:

  • 存储用户代理字符串:学校中的许多计算机都是标准化的,并生成相同的用户代理字符串

  • 存储本地/网络 IP 地址:目前没有可靠有效的评估方法

  • 给每个用户一个唯一的 ID 并存储在 cookie 中:可以轻松刷新 session 、清除缓存、不同的浏览器等。

如果有某种方法可以使用 PHP 或 MySQL 可靠地识别小型网络地址背后的用户,理想情况下我们会比较最近从该地址尝试登录的次数。这样我们就可以锁定(服务器端)那个用户。

我想知道拥有较大用户群的网站有效使用了哪些方法。

最佳答案

这里的标准方法是 tar pit .只需减慢它们的速度,这样就不可能对帐户进行暴力攻击。

另一种方法是在对特定帐户进行多次失败尝试后使用验证码。唯一的缺点是,如果受害者必须为他们的帐户输入验证码,他们就会知道他们受到了攻击。

这假设每个人都有一个强密码。强制使用强(长、非字典)密码。

通过这种方法,很少需要锁定受到攻击的帐户,但如果您愿意,可以通知他们。

关于php - 防止许多用户共享 IP 地址的暴力攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966869/

相关文章:

php - 如何处理大型 php mysql $_POST UPDATE/INSERT

php - 路由参数,找不到页面不会导致404

php - 如何在单个sql查询中选择和求和

PHP 认证库

php - 如何解决此 SOAP 异常 'Unmarshalling Error'

php - 如何用 Doctrine 做全文检索?

php - 恢复备份 mysqldump php

php - PHP/MySQL 的问题

mysql - Magento:将 PDO 结果变成 Varien 对象

PHP - 无法回显返回数组中的值