Parlons de votre projet
PHP Symfony Sonata

Sonata Extra Bundle : pare-feu applicatif

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.

Contrôles de compatibilité Symfony et Sonata

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.

Contrôles de compatibilité Symfony et Sonata

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.

Partager cet article