Skip to content

tomakakwark/wafy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wafy - Gestion des IP Bannies et Détection des Requêtes Malveillantes

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
});