agenter-labs/laravel-firewall

Laravel 的 Web 应用防火墙 (WAF) 包

2.0.0 2022-04-04 12:16 UTC

README

Downloads Tests StyleCI Quality License

此包旨在保护您的 Laravel 应用免受各种攻击,如 XSS、SQLi、RFI、LFI、User Agent 等。它还将阻止重复攻击,并在检测到攻击时通过电子邮件和/或 Slack 发送通知。此外,它还将记录失败的登录尝试,并在多次尝试后阻止 IP 地址。

注意:某些中间件类(例如 Xss)为空,因为它们扩展的 Middleware 抽象类动态地完成了所有工作。简而言之,它们都正常工作 ;)

入门

1. 安装

运行以下命令

composer require AgenterLab/laravel-firewall

2. 注册(针对 Laravel < 5.5)

config/app.php 中注册服务提供者

AgenterLab\Firewall\Provider::class,

3. 发布

发布配置、语言和迁移文件

php artisan vendor:publish --tag=firewall

4. 数据库

创建数据库表

php artisan migrate

5. 配置

您可以通过 config/firewall.php 文件更改应用的防火墙设置

使用方法

中间件已经定义,只需将它们添加到路由中。配置文件中的 firewall.all 中间件将应用 all_middleware 数组中所有可用的中间件。

Route::group(['middleware' => 'firewall.all'], function () {
    Route::get('/', 'HomeController@index');
});

您可以为每个路由应用每个中间件。例如,您可以让只有白名单 IP 地址可以访问管理界面

Route::group(['middleware' => 'firewall.whitelist'], function () {
    Route::get('/admin', 'AdminController@index');
});

或者,您可以通过将其添加到 inspections 配置来通知任何人不是白名单用户访问管理界面

Route::group(['middleware' => 'firewall.url'], function () {
    Route::get('/admin', 'AdminController@index');
});

适用于路由的可用的中间件

firewall.all

firewall.agent
firewall.bot
firewall.geo
firewall.ip
firewall.lfi
firewall.php
firewall.referrer
firewall.rfi
firewall.session
firewall.sqli
firewall.swear
firewall.url
firewall.whitelist
firewall.xss

您也可以在 config/firewall.php 中为每个中间件定义 routes,并在所有路由顶部应用该中间件或 firewall.all

通知

防火墙会在检测到攻击后立即发送通知。在 notifications.email.to 配置中输入的电子邮件必须为有效的 Laravel 用户才能发送通知。有关更多信息,请参阅 Laravel 的通知文档。

变更日志

请参阅发行版以获取更多最近更改的信息。

贡献

欢迎提交拉取请求。您必须遵循 PSR 编码标准。

安全

如果您发现任何与安全相关的问题,请通过电子邮件security@AgenterLab.com报告,而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证(MIT)。请参阅LICENSE以获取更多信息。