codific / zf2-brute-force-protection
此软件包已废弃,不再维护。未建议替代软件包。
暴力破解认证保护。
dev-master
2016-05-10 07:23 UTC
Requires
- php: >=5.3.0
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
设置
- 将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);
就这样。