codific/zf2-brute-force-protection

此软件包已废弃,不再维护。未建议替代软件包。

暴力破解认证保护。

dev-master 2016-05-10 07:23 UTC

This package is not auto-updated.

Last update: 2022-04-30 05:39:58 UTC


README

用于Zend Framework 2的自动暴力破解攻击预防模块。在数据库中存储整个站点的所有失败登录尝试,并将最近失败的尝试次数与预设阈值进行比较。在登录请求之间响应时间延迟。

由CODIFIC团队实现 • 我们编写出色的代码。

受Evan Francis作品的启发,https://github.com/ejfrancis/brute-force-block。受Angular JS实现的启发,https://npmjs.net.cn/package/express-brute

MIT许可证 https://open-source.org.cn/licenses/MIT

规范

所有失败的尝试都存储在数据库表中的一个。暴力破解保护基于IP地址。预定义的阈值配置决定了在特定数量的失败尝试之后的延迟。经过一定的时间(例如,10分钟)失败尝试会过期。如果攻击者与合法用户具有相同的IP地址,则仍然可以进行针对特定目标的拒绝服务攻击。

安装

使用以下行将插件添加到composer.json中

"codific/zf2-brute-force-protection": "dev-master"

并运行

php composer.phar update

设置

  1. 将user_failed_login.sql文件导入到数据库中
  • 如果您使用的是存储在data/local.php中的本地.php配置文件,则插件按原样工作。
  • 否则,请设置$databaseConfig数组。
$databaseConfig = array(
     'host' => 'localhost',
     'port' = > 3306,
     'dbname' => 'database_name',
     'username' => 'username',
     'password' => 'password');

使用

在LoginController(或任何负责登录业务逻辑的控制器)中

在运行认证之前

在实际上运行提供的认证凭据之前,使用以下代码(或类似代码)来检查是否有太多的请求

  $delay = \Codific\BruteForce::getLoginDelay();
  if($delay > 0)
  {
      $this->cache->error = "Too Many Requests. Please wait $delay seconds before next try.";
      return $this->redirect()->toUrl("/admin/login/index");
  }

您还可以返回HTTP代码429,这可能是更系统性的解决方案

  if(\Codific\BruteForce::getLoginDelay() > 0)
  {
      return $this->getResponse()->setStatusCode(429);
  }

如果登录失败

如果使用提供的认证凭据登录失败,则通过以下代码添加失败尝试

  \Codific\BruteForce::addFailedLogin($username);

就这样。