Saltar al contenido
Underc0de /foro

¿Qué es CSP (Content Security Policy)?

$ man csp

CSP (Content Security Policy) es un mecanismo de seguridad del navegador que, mediante una cabecera HTTP, define desde qué orígenes una página puede cargar scripts, estilos y otros recursos, mitigando ataques como XSS.

Content Security PolicyPolítica de Seguridad de ContenidoContent-Security-Policy#seguridad-web#desarrollo-web#vulnerabilidades

Definición

Content Security Policy es un estándar web que permite al servidor indicarle al navegador qué fuentes de contenido son legítimas para una página. Se envía normalmente en la cabecera HTTP
Código: text
Content-Security-Policy
(o en una etiqueta
Código: text
<meta>
) y se compone de directivas como
Código: text
default-src
,
Código: text
script-src
,
Código: text
style-src
,
Código: text
img-src
o
Código: text
frame-ancestors
. Si un recurso no cumple la política, el navegador lo bloquea. Existen variantes basadas en listas de dominios permitidos y las llamadas strict CSP, que usan nonces o hashes para autorizar solo scripts concretos; además, el modo
Código: text
Content-Security-Policy-Report-Only
permite probar la política sin bloquear nada.

Ejemplo

Un sitio que solo quiere ejecutar sus propios scripts y los que tengan un nonce generado en cada respuesta puede enviar:
Código: text
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-r4nd0m'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'
. Así, si un atacante logra inyectar un
Código: html
<script>
por un fallo de XSS, el navegador se niega a ejecutarlo porque no tiene el nonce válido.

Cómo protegerse

  • Empezá con el modo
    Código: text
    Report-Only
    y una directiva de reporte para detectar qué se rompería antes de aplicar la política en serio.
  • Evitá
    Código: text
    'unsafe-inline'
    y
    Código: text
    'unsafe-eval'
    en
    Código: text
    script-src
    ; preferí nonces aleatorios por respuesta o hashes.
  • Definí siempre
    Código: text
    object-src 'none'
    y
    Código: text
    base-uri 'self'
    (o
    Código: text
    'none'
    ), y usá
    Código: text
    frame-ancestors
    para prevenir clickjacking.
  • No confíes en listas amplias de dominios (CDN públicos, comodines como
    Código: text
    *.ejemplo.com
    ): pueden alojar scripts que permiten saltear la política.
  • Revisá la política con herramientas de análisis de cabeceras y volvé a evaluarla cada vez que agregues recursos de terceros.

Para tener en cuenta

CSP es una defensa en profundidad, no un reemplazo de validar entradas y escapar salidas: una política mal configurada da una falsa sensación de seguridad. Tampoco frena la inyección en sí, sino que limita lo que el código inyectado puede hacer en el navegador.

Redactado con el asistente Underc0de IA. Actualizado el 15/11/2026. ¿Ves un error o querés sumar algo? Contanos en el foro.

Grupo de WhatsApp