bdsa / wafy
Un package Laravel pour bannir les adresses IP automatiquement et détecter les requêtes malveillantes.
Requires
- php: >=7.4
- illuminate/support: ^8.0|^9.0|^10.0
This package is not auto-updated.
Last update: 2025-07-02 23:32:17 UTC
README
Wafy est un package Laravel développé par Bdsa pour bannir automatiquement les adresses IP et détecter les requêtes malveillantes telles que les tentatives d'injection SQL.
Résumé
Ce fichier README.md explique les étapes pour installer, configurer et utiliser le package wafy dans un projet Laravel. Il inclut des instructions pour :
- Ajouter le package via Composer.
- Publier la configuration et la migration.
- Appliquer la migration.
- Utiliser les middlewares et les commandes artisan.
- Configurer les patterns de détection des requêtes malveillantes.
Installation
1. Ajouter le package à votre projet
Dans le fichier composer.json
de votre projet Laravel, ajoutez ce package :
"repositories": [ { "type": "vcs", "url": "https://github.com/tomakakwark/wafy" } ],
"require": { "bdsa/wafy": "dev-main" }
composer update
php artisan vendor:publish --provider="Bdsa\Wafy\WafyServiceProvider"
php artisan migrate
Middlewares
Le package fournit deux middlewares principaux :
BlockBannedIp : Bloque l'accès des IP bannies à l'application. DetectMaliciousRequests : Détecte les requêtes malveillantes (comme les tentatives d'injection SQL) et bannit automatiquement les adresses IP correspondantes. Pour les utiliser, ajoutez-les dans le fichier app/Http/Kernel.php de votre projet Laravel, dans la section $middleware ou $routeMiddleware :
protected $middleware = [ \Bdsa\Wafy\Middleware\BlockBannedIp::class, \Bdsa\Wafy\Middleware\DetectMaliciousRequests::class, ];
Commands Artisan
Le package fournit également trois commandes artisan pour gérer les IP bannies :
Bannir une IP :
php artisan waf:ban {adresse_ip}
Déban une IP :
php artisan waf:unban {adresse_ip}
Afficher les IP bannies :
php artisan wafy:list
Exemple de configuration :
return [ 'patterns' => [ '/(select\s.*from|union\s.*select|information_schema|concat|0x)/i', '/(\*.*from|where.*=.*\d)/i', ], ];
Exemple d'intégration dans les routes
Voici un exemple d'intégration des middlewares dans un groupe de routes :
Route::group(['middleware' => ['block.banned.ip', 'detect.malicious.requests']], function () { Route::get('/', function () { return view('welcome'); }); // Autres routes ici });