El SonataExtraBundle proporciona un conjunto de funcionalidades mejoradas para la gestión de las reglas de firewall en el entorno Sonata Admin. Este bundle permite a los administradores crear y gestionar reglas para filtrar las solicitudes según diferentes criterios como palabras prohibidas, direcciones IP y agentes de usuario.
Funcionalidades
- Gestión de reglas del cortafuegos: Definir y gestionar las reglas del cortafuegos para filtrar las solicitudes entrantes.
- Soporte para múltiples criterios: filtrar las solicitudes según palabras prohibidas, direcciones IP y agentes de usuario.
- Aplicación dinámica de las reglas: Aplicar las reglas en función de los parámetros de la solicitud (GET, POST, encabezados).
- Integración de la caché: las reglas se almacenan en caché para mejorar el rendimiento con la posibilidad de reiniciar la caché durante las actualizaciones.
- Análisis de datos recursivo: gestionar estructuras de datos complejas en los parámetros de consulta.
Activación
Agregue el receptor del cortafuegos en su services.yaml
sonata-extra.Firewall_Listener:
class: Partitech\SonataExtra\EventListener\FirewallListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
Agregue interfaces administrativas en su sonata_admin.yaml
firewall:
icon: fa fa-cogs
label: Firewall
items:
- Partitech\SonataExtra\Admin\SecFirewallRuleAdmin
- Partitech\SonataExtra\Admin\SecStopWordAdmin
- Partitech\SonataExtra\Admin\SecIpRuleAdmin
Creación de reglas de firewall
Las reglas de firewall pueden ser creadas y gestionadas a través del panel de control de Sonata Admin. Se admiten los siguientes tipos de reglas:
- Palabra prohibida: Bloquear las solicitudes que contengan palabras clave especificadas.
- IP: Bloquear las solicitudes provenientes de las direcciones IP especificadas.
- Agente de usuario: Bloquear las solicitudes provenientes de los agentes de usuario especificados.
Configuración de reglas
Cada regla se compone de los siguientes elementos:
type: tipo de regla (por ejemplo, 'palabra_prohibida', 'ip', 'agente_de_usuario').source: fuente de los datos a analizar (por ejemplo, 'GET', 'POST', 'HEADER').parameters: lista de valores a verificar con respecto a la regla.matchMode: determina si la regla debe buscar una coincidencia exacta (equal) o una coincidencia parcial (contain).
Gestión de la caché
El paquete utiliza la caché para mejorar el rendimiento. La caché se reinicia automáticamente cada vez que se actualiza, crea o elimina una regla.
Adaptar el ejemplo a la versión instalada
Los ejemplos de Symfony y Sonata permanecen ligados a las versiones indicadas en el artículo. Symfony 4.x y Symfony 6.2 ya no se mantienen: para un proyecto actual, utilice una rama mantenida y la documentación que corresponda exactamente a sus dependencias.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Antes de retomar el código, controle las firmas, los servicios, las rutas y las plantillas correspondientes. Después, agregue una prueba funcional que cubra los permisos, el código HTTP y el resultado visible.
Referencia: versiones de Symfony mantenidas.