CSP base-uri directiva en "Ver fuente de página" en

3

Estoy en el proceso de implementar un encabezado CSP para una aplicación web, con el objetivo de reducir posibles ataques XSS. Consulte CSP para obtener una descripción general de CSP. Proporcioné la directiva base-uri como 'yo' y esto funciona como se esperaba y las infracciones se informaron al informe uri. Consulte base-uri para obtener una explicación de la base-uri directiva.

Lo que me sorprende es que cuando uso Chrome (versión 56.0.2924.87 de 64 bits) para "Ver origen de página" hay un informe de violación de CSP. Aquí hay un ejemplo del informe de violación:

{
"csp-report": {
    "document-uri": "http://localhost:8080/frontend/Page1.action?param1=1",
    "referrer": "",
    "violated-directive": "base-uri",
    "effective-directive": "base-uri",
    "original-policy": "base-uri 'self'; report-uri /frontend/CspReport.action?",
    "disposition": "report",
    "blocked-uri": "http://localhost:8080/frontend/",
    "status-code": 200
    }
}

Simplifiqué la política para asegurarme de que nada más interfiera. Por lo que entiendo, el "uri bloqueado" debe coincidir con la palabra clave 'self' porque coincide con el principio del "uri de documento".

Lo que hace que esto sea más extraño es que solo ocurre cuando se visualiza la fuente en algunas páginas (pero en estas páginas ocurre el 100% del tiempo) y no parece suceder en Firefox y no sucede cuando simplemente se navega entre páginas.

Entonces, la pregunta es ¿por qué es esto una violación de CSP cuando parece no violar la directiva especificada?

    
pregunta Andrew 08.03.2017 - 11:25
fuente

1 respuesta

0

Para ayudar a los futuros usuarios, resumiré la información de ayuda proporcionada en los comentarios de @Sjoerd y @dandavis.

En la especificación de CSP, "self" se define de la siguiente manera:

  

'self'

     

Se refiere al origen desde donde se está enviando el documento protegido.   servido, incluyendo el mismo esquema de URL y número de puerto. Debes   incluir las comillas simples. Algunos navegadores excluyen específicamente blob y   Sistema de archivos desde directivas de origen. Sitios que necesitan permitir estos   los tipos de contenido pueden especificarlos usando el atributo Datos.

Esto es parcialmente ambiguo ya que parece que el esquema no está definido. En el ejemplo proporcionado, Chrome define el esquema de self como http: y view-source:http: como un esquema diferente.

Firefox parece haber elegido una interpretación diferente donde view-source:http: es el mismo esquema que http: o al menos que ambos coincidan con "self" en la política de base-uri.

En Chrome, esperaría que el informe de CSP contuviera

"blocked-uri": "view-source:http://localhost:8080/frontend/"

Lo que indicaría por qué se bloqueó el uri, pero parece que la vista-fuente: parte se elimina antes de enviar el informe de CSP.

    
respondido por el Andrew 14.03.2017 - 13:34
fuente

Lea otras preguntas en las etiquetas