[Laravel 扩展包]Laravel Firewall:防止 Laravel 应用遭受各种攻击
随着应用越来越受欢迎,它会成为各种攻击的目标。即使不那么流行,也有一些机器人会不断地在你的应用中寻找漏洞。
因此,保护你的应用免受此类攻击始终是个好主意。如果你正在使用 Laravel,有一个名为 Laravel Firewall 的软件包可以帮助你做到这一点。这是 Laravel 的 WAF(Web 应用程序防火墙)。
从本质上讲,它是一个包,可以帮助你保护 Laravel 应用免受各种攻击,如 XSS、SQLi、RFI、LFI、User Agent 等。它通过阻止对应用的恶意请求来做到这一点。
你可以在路由级别保护应用程序免受这些攻击。因此,也可以指定要保护哪些路由免受哪些攻击。
安装 Laravel Firewall
要安装该包,你可以使用 Composer
composer require akaunting/laravel-firewall
安装完后,可以如下发布配置文件,迁移文件和语言文件:
php artisan vendor:publish --tag=firewall
最后,运行迁移创建必要的表格。
php artisan migrate
该命令创建两个表格:firewall_ips
和 firewall_logs
。firewall_ips
表格将保存你要屏蔽的 IP,而 firewall_logs
将存储被屏蔽的请求日志。
用例
该包提供了几个中间件,你可以使用这些中间件来保护路由免受各种攻击。例如,如果你想保护路由免受 XSS 攻击,可以像这样使用 firewall.xss
中间件。.
Route::get('protected-route', function () {
//
})->middleware('firewall.xss');
类似地,如果你想保护路由免受 SOLi 攻击,可以这样使用 firewall.sqli
中间件。
Route::get('protected-route', function () {
//
})->middleware('firewall.sqli');
你还可以使用 firewall.all
保护路由免受所有攻击:
Route::group(['middleware' => 'firewall.all'], function () {
Route::get('/', 'DashboardController@index');
});
配置
该包提供了一个配置文件: config/firewall.php
。
配置文件允许你单独配置不同的攻击级别。比如,如果你想配置登录失败尝试的攻击,像这样:
'login' => [
'enabled' => env(
'FIREWALL_MIDDLEWARE_LOGIN_ENABLED',
env('FIREWALL_ENABLED', true)
),
'auto_block' => [
'attempts' => 5,
'frequency' => 1 * 60, // 1 minute
'period' => 30 * 60, // 30 minutes
],
]
此处,你可以配置尝试登录的次数,以及尝试登录失败的时间间隔。
类似地,你也可以配置其他攻击。
结论
Laravel Firewall 是一个很好的包,可以保护 Laravel 应用免受各种攻击。它易于使用和配置,可以很好地添加到 Laravel 应用中。