Le SonataExtraBundle fournit un ensemble de fonctionnalités améliorées pour la gestion des règles de pare-feu dans l'environnement Sonata Admin. Ce bundle permet aux administrateurs de créer et de gérer des règles pour filtrer les requêtes en fonction de différents critères tels que les mots interdits, les adresses IP et les agents utilisateurs.
Fonctionnalités
- Gestion des règles du pare-feu : Définir et gérer les règles du pare-feu pour filtrer les requêtes entrantes.
- Support pour plusieurs critères : filtrer les requêtes en fonction des mots interdits, des adresses IP et des agents utilisateurs.
- Application dynamique des règles : Appliquer les règles en fonction des paramètres de la requête (GET, POST, en-têtes).
- Intégration du cache : les règles sont mises en cache pour améliorer les performances avec la possibilité de réinitialiser le cache lors des mises à jour.
- Analyse de données récursive : gérer des structures de données complexes dans les paramètres de requête.
Activation
Ajoutez le listener du pare-feu dans votre services.yaml
sonata-extra.Firewall_Listener:
class: Partitech\SonataExtra\EventListener\FirewallListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
Ajoutez des interfaces administratives dans votre sonata_admin.yaml
firewall:
icon: fa fa-cogs
label: Firewall
items:
- Partitech\SonataExtra\Admin\SecFirewallRuleAdmin
- Partitech\SonataExtra\Admin\SecStopWordAdmin
- Partitech\SonataExtra\Admin\SecIpRuleAdmin
Création de règles de pare-feu
Les règles de pare-feu peuvent être créées et gérées via le tableau de bord Sonata Admin. Les types de règles suivants sont pris en charge :
- Mot interdit : Bloquer les requêtes contenant des mots-clés spécifiés.
- IP : Bloquer les requêtes provenant des adresses IP spécifiées.
- Agent utilisateur : Bloquer les requêtes provenant des agents utilisateurs spécifiés.
Configuration des règles
Chaque règle se compose des éléments suivants :
type: type de règle (par exemple, 'stop_word', 'ip', 'user_agent').source: source des données à analyser (par exemple, 'GET', 'POST', 'HEADER').parameters: liste de valeurs à vérifier par rapport à la règle.matchMode: détermine si la règle doit rechercher une correspondance exacte (equal) ou une correspondance partielle (contain).
Gestion du cache
Le bundle utilise la mise en cache pour améliorer les performances. Le cache est automatiquement réinitialisé chaque fois qu'une règle est mise à jour, créée ou supprimée.
Adapter l’exemple à la version installée
Les exemples Symfony et Sonata restent attachés aux versions indiquées dans l’article. Symfony 4.x et Symfony 6.2 ne sont plus maintenus : pour un projet actuel, utilisez une branche maintenue et la documentation correspondant exactement à vos dépendances.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Avant de reprendre le code, contrôlez les signatures, les services, les routes et les templates concernés. Ajoutez ensuite un test fonctionnel couvrant les autorisations, le code HTTP et le résultat visible.
Référence : versions Symfony maintenues.