Web Application Firewall (WAF) package for Laravel
akaunting/laravel-firewall is a Laravel package for web application firewall (waf) package for laravel.
It currently has 1.003 GitHub stars and 532.868 downloads on Packagist (latest version 3.0.0).
Install it with composer require akaunting/laravel-firewall.
Discover more Laravel packages by akaunting
or browse all Laravel packages to compare alternatives.
Last updated
This package intends to protect your Laravel app from different type of attacks such as XSS, SQLi, RFI, LFI, User Agent, and a lot more. It will also block repeated attacks and send notification via email and/or slack when attack is detected. Furthermore, it will log failed logins and block the IP after a number of attempts.
Note: Some middleware classes (i.e. Xss) are empty as the Middleware abstract class that they extend does all of the job, dynamically. In short, they all works ;)
Run the following command:
composer require akaunting/laravel-firewall
Publish configuration, language, and migrations
php artisan vendor:publish --tag=firewall
Create db tables
php artisan migrate
You can change the firewall settings of your app from config/firewall.php file
Middlewares are already defined so should just add them to routes. The firewall.all middleware applies all the middlewares available in the all_middleware array of config file.
Route::group(['middleware' => 'firewall.all'], function () {
Route::get('/', 'HomeController@index');
});
You can apply each middleware per route. For example, you can allow only whitelisted IPs to access admin:
Route::group(['middleware' => 'firewall.whitelist'], function () {
Route::get('/admin', 'AdminController@index');
});
Or you can get notified when anyone NOT in whitelist access admin, by adding it to the inspections config:
Route::group(['middleware' => 'firewall.url'], function () {
Route::get('/admin', 'AdminController@index');
});
Available middlewares applicable to routes:
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
You may also define routes for each middleware in config/firewall.php and apply that middleware or firewall.all at the top of all routes.
Firewall will send a notification as soon as an attack has been detected. Emails entered in notifications.email.to config must be valid Laravel users in order to send notifications. Check out the Notifications documentation of Laravel for further information.
Please see Releases for more information on what has changed recently.
Pull requests are more than welcome. You must follow the PSR coding standards.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see LICENSE for more information.