spinzar / firewall
Laravel 的 Web 应用防火墙 (WAF) 包
Requires
- php: ^5.6.0|^7.0|^7.1|^7.2|^7.3|^7.4
- guzzlehttp/guzzle: ^6.0|^7.0
- jenssegers/agent: 2.6.*
- laravel/framework: 5.4.*|5.5.*|5.6.*|5.7.*|5.8.*|6.*|7.*|8.*
Requires (Dev)
- orchestra/testbench: ^3.0|^4.0|^5.0|^6.0
- phpunit/phpunit: ^4.8|^5.7|^6.5|^7.5|^8.5|^9.3
README
此包旨在保护您的 Laravel 应用免受各种攻击,如 XSS、SQLi、RFI、LFI、用户代理等。它还会阻止重复攻击,并在检测到攻击时通过电子邮件和/或 Slack 发送通知。此外,它还会记录失败的登录尝试,并在多次尝试后阻止 IP 地址。
注意:某些中间件类(例如 Xss)为空,因为它们扩展的 Middleware 抽象类会动态地完成所有工作。简而言之,它们都有效;)
入门
1. 安装
运行以下命令
composer require spinzar/firewall
2. 注册(适用于 Laravel < 5.5)
在 config/app.php 中注册服务提供者
Spinzar\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 配置来通知不在 whitelist 中的任何人访问管理员
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@spinzar.co,而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证 (MIT)。请参阅 LICENSE 以获取更多信息。