Il SonataExtraBundle fornisce un insieme di funzionalità migliorate per la gestione delle regole del firewall nell'ambiente Sonata Admin. Questo bundle permette agli amministratori di creare e gestire regole per filtrare le richieste in base a diversi criteri come parole vietate, indirizzi IP e agenti utente.
Funzionalità
- Gestione delle regole del firewall: Definire e gestire le regole del firewall per filtrare le richieste in arrivo.
- Supporto per più criteri: filtrare le richieste in base alle parole vietate, agli indirizzi IP e agli agenti utente.
- Applicazione dinamica delle regole: Applicare le regole in base ai parametri della richiesta (GET, POST, intestazioni).
- Integrazione della cache: le regole sono memorizzate nella cache per migliorare le prestazioni con la possibilità di resettare la cache durante gli aggiornamenti.
- Analisi dei dati ricorsiva: gestire strutture di dati complesse nei parametri di richiesta.
Attivazione
Aggiungi il listener del firewall nel tuo services.yaml
sonata-extra.Firewall_Listener:
class: Partitech\SonataExtra\EventListener\FirewallListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
Aggiungi interfacce amministrative nel tuo sonata_admin.yaml
firewall:
icon: fa fa-cogs
label: Firewall
items:
- Partitech\SonataExtra\Admin\SecFirewallRuleAdmin
- Partitech\SonataExtra\Admin\SecStopWordAdmin
- Partitech\SonataExtra\Admin\SecIpRuleAdmin
Creazione di regole del firewall
Le regole del firewall possono essere create e gestite tramite il pannello di controllo Sonata Admin. Sono supportati i seguenti tipi di regole:
- Parola vietata: Bloccare le richieste contenenti parole chiave specificate.
- IP: Bloccare le richieste provenienti dagli indirizzi IP specificati.
- Agente utente: Bloccare le richieste provenienti dagli agenti utente specificati.
Configurazione delle regole
Ogni regola è composta dagli elementi seguenti:
type: tipo di regola (ad esempio, 'stop_word', 'ip', 'user_agent').source: fonte dei dati da analizzare (ad esempio, 'GET', 'POST', 'HEADER').parameters: elenco di valori da verificare rispetto alla regola.matchMode: determina se la regola deve cercare una corrispondenza esatta (equal) o una corrispondenza parziale (contain).
Gestione della cache
Il bundle utilizza la cache per migliorare le prestazioni. La cache viene automaticamente reimpostata ogni volta che una regola viene aggiornata, creata o eliminata.
Adattare l’esempio alla versione installata
Gli esempi Symfony e Sonata rimangono legati alle versioni indicate nell’articolo. Symfony 4.x e Symfony 6.2 non sono più supportati: per un progetto attuale, utilizzate un ramo mantenuto e la documentazione corrispondente esattamente alle vostre dipendenze.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Prima di riprendere il codice, controllate le firme, i servizi, le rotte e i template interessati. Aggiungete poi un test funzionale che copra le autorizzazioni, il codice HTTP e il risultato visibile.
Riferimento : versioni di Symfony supportate.