Introducción
La Política de Seguridad de Contenidos (CSP) es un mecanismo de seguridad del navegador que ayuda a reducir los riesgos de Cross-Site Scripting (XSS) y de inyección de contenido. El paquete Sonata-Extra para Symfony ofrece una manera eficaz de implementar y gestionar la CSP en su aplicación.
Comprender la Política de Seguridad de Contenidos
La CSP se transmite mediante un encabezado de respuesta y permite controlar los recursos que su página web puede cargar o ejecutar. Al especificar una lista de fuentes confiables, puede reducir el riesgo de inyecciones de contenido malicioso.
Conceptos clave
- Directivas: Son las reglas que definen qué recursos pueden cargarse. Cada directiva controla un tipo específico de recurso, como scripts, estilos, imágenes, etc.
- Fuentes: Bajo cada directiva, se especifican fuentes (como URL) desde las cuales se puede cargar el recurso.
Tipos de seguridad en el paquete Sonata-Extra
En Sonata Extra Bundle, SECURITY_TYPES es una tabla constante que asocia las directivas CSP con sus claves de configuración. Aquí hay un desglose de cada directiva:
default-src
Respuesta predeterminada para la mayoría de las directivas. Controla las fuentes predeterminadas para diferentes tipos de contenido.
script-src
Define las fuentes válidas para JavaScript. Las opciones incluyen:
'self': Cargar los scripts solo desde la misma fuente.'unsafe-inline'Permitir los scripts en línea, aunque sea menos seguro.- URLs específicas: Defina los scripts externos permitidos.
style-src
Especifica las fuentes válidas para las hojas de estilo. Opciones similares a script-src.
img-src
Controla las fuentes desde las cuales se pueden cargar las imágenes.
connect-src
Limita los orígenes a los que puedes conectarte (por ejemplo, WebSockets, solicitudes AJAX).
font-src
Define las fuentes de los archivos de fuentes.
object-src
Controla las fuentes para elementos como <object>, <embed>, etc.
media-src
Especifica las fuentes para la carga de medios (audio y video).
frame-src
Determina las fuentes válidas para los frames y las iframes.
Otras directivas
child-src,form-action,frame-ancestors,manifest-src,base-uri,sandbox,report-uri,worker-src,navigate-toEstos afinan aún más las políticas para casos de uso específicos.
Implementación de la CSP en el paquete Sonata-Extra
Configuración
Defina sus políticas CSP en un archivo de configuración YAML en partitech_sonata_extra. Por ejemplo :
partitech_sonata_extra:
content_security_policy:
object-src:
- 'none'
script-src:
- 'self'
- 'unsafe-inline'
- 'https://external.script.url'
style-src:
- 'self'
- 'unsafe-inline'
- 'https://external.stylesheet.url'
font-src:
- 'self'
- 'https://cdnjs.cloudflare.com/'
- 'https://fonts.gstatic.com/'
Validar la política antes de su despliegue


Comience por observar las violaciones en modo informe, luego restrinja las fuentes autorizadas. Una CSP no reemplaza ni el escape de salidas ni la validación de entradas.