El encabezado de respuesta HTTP Content-Security-Policy-Report-Only permite a los desarrolladores web probar las políticas vigilando sus efectos. Estos informes de infracción consisten en documentos JSON enviados a través de una solicitud HTTP POST al URI especificado. Es un encabezado de tipo respuesta.
Sintaxis:
Content-Security-Policy-Report-Only: <policy-directive>
Directivas: este encabezado acepta un solo encabezado mencionado anteriormente y descrito a continuación:
- <policy-directive>: en este encabezado
content-security-policy
se puede usar el encabezado. Lasreport-uri
directivas deben usarse con este encabezado.
Nota: La report-uri
directiva está destinada a ser reemplazada por una report-to
directiva, report-to
aún no es compatible con la mayoría de los navegadores. Por lo tanto, para abordar los problemas de compatibilidad, se pueden especificar ambos , report-uri
ya report-to
que no solo agregaría compatibilidad con los navegadores actuales, sino que también agregaría compatibilidad hacia adelante cuando los navegadores obtengan report-to
soporte.
Content–Security-Policy: ….; report-uri https://written.geeksforgeeks.com; report-to groupname
Los navegadores compatibles report-to
ignorarán report-uri
.
- report-to: Dispara un
SecurityPolicyViolationEvent
. Como se indicó anteriormente, no es compatible con todos los navegadores a partir de ahora.
Ejemplos: El propósito del encabezado es informar cualquier infracción que pueda haber ocurrido. Se puede utilizar de forma iterativa para trabajar en una política de seguridad de contenido. Uno puede observar cómo se comporta su sitio, buscar informes de infracciones y/o redireccionamientos de malware , y luego elegir la política adecuada impuesta por el Content-Security-Policy
encabezado.
Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/
Si uno desea recibir informes sin dejar de imponer la política, puede usar el Content-Security-Policy
encabezado con la report-uri
directiva.
Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/
Para verificar este Contenido-Seguridad-Política-Informe-Solo en acción, vaya a Inspeccionar elemento -> Red , verifique el encabezado de solicitud de Contenido-Seguridad-Política-Informe-Solo como a continuación, Contenido-Seguridad-Política-Informe-Solo está resaltado puede ver.
Sintaxis del informe de infracción: el informe JSON contiene los siguientes datos:
- uri bloqueado: el URI del recurso bloqueado por la política de seguridad de contenido para que no se cargue. Si el URI bloqueado proviene de una fuente diferente al uri del documento, entonces el URI bloqueado se acorta para contener solo el esquema, el host y el puerto.
- Disposición: Ya sea
“enforce”
o“reporting”
. Depende de si se utiliza elContent-Security-Policy
o elContent-Security-Policy-Report-Only
encabezado. - document-uri: el URI del documento que encontró la infracción.
- directiva-efectiva: La directiva cuya implementación causó la violación.
- política-original: la política original especificada por el
Content-Security-Policy-Report-Only
encabezado HTTP. - referente: El referente del documento que encontró la violación.
- script-sample: los primeros 40 caracteres del script en línea, el controlador de eventos o el estilo que dio lugar a la infracción.
- código de estado: el código de estado HTTP del recurso en el que se incorporó el objeto global.
- directiva-violación: el nombre de la sección de la política infringida.
Ejemplo de informe de infracción: la página ubicada en http://geeksforgeeks.com/signup.html
. A continuación se muestra la política implementada, que solo permite la hoja de estilo de cdn.geeksforgeeks.com
.
Content-Security-Policy-Report-Only: default-src ‘none’; style-src cdn.geeksforgeeks.com; report-uri /_/csp-reports
- Código HTML: El HTML de
signup.html
se ve así:<!DOCTYPE html>
<
html
>
<
head
>
<
title
>Sign Up</
title
>
<
link
rel=”stylesheet” href=”css/style.css”>
</
head
>
<
body
>
. . .
</
body
>
</
html
>
- Infracción: Aquí, el CSS solo puede descargarse desde la CDN, pero en el código HTML, los navegadores intentarán cargar desde su propio archivo local porque los navegadores enviarán la siguiente infracción.
{ “csp-report”:{ “document-uri”: “http://geeksforgeeks.com/signup.html”, “referrer”: “”, “blocked-uri”: “http://geeksforgeeks.com/css/style.css”, “violated-directive”: “style-src cdn.geeksforgeeks.com”, “original-policy”: “default-src ‘none’; style-src cdn.geeksforgeeks.com; report-uri /_/csp-reports”, “disposition”: “report” } }
Navegadores compatibles: los navegadores son compatibles con los encabezados HTTP Content-Security-Policy-Report-Only que se enumeran a continuación:
- Google Chrome 25.0
- Internet Explorer 10.0
- Firefox 23.0
- Safari 7.0
- Ópera 15.0