编程

[Laravel 扩展包]Laravel Firewall:防止 Laravel 应用遭受各种攻击

616 2024-03-23 17:09:00

随着应用越来越受欢迎,它会成为各种攻击的目标。即使不那么流行,也有一些机器人会不断地在你的应用中寻找漏洞。

因此,保护你的应用免受此类攻击始终是个好主意。如果你正在使用 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_ipsfirewall_logsfirewall_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 应用中。