Direttiva CSP base-uri su "Visualizza origine pagina" su

3

Sono in procinto di implementare un'intestazione CSP per un'applicazione web, con l'obiettivo di ridurre possibili attacchi XSS. Vedi CSP per una panoramica di CSP. Ho fornito la direttiva base-uri come 'self' e questo funziona come previsto con le violazioni segnalate al report-uri. Vedi base-uri per una spiegazione della base-uri direttiva.

Ciò che mi sorprende è che quando uso chrome (versione 56.0.2924.87 a 64 bit) su "Visualizza origine pagina" c'è un rapporto di violazione CSP. Ecco un esempio del rapporto sulle violazioni:

{
"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
    }
}

Ho semplificato la politica per assicurarmi che nient'altro interferisca. Da quello che capisco il "block-uri" dovrebbe corrispondere alla parola chiave "self" perché corrisponde all'inizio del "document-uri".

Ciò che rende questo più strano è che accade solo quando si guarda la fonte su alcune pagine (ma su queste pagine accade il 100% delle volte) e non sembra accadere su Firefox e non accade quando si naviga semplicemente tra pagine.

Quindi, la domanda è: perché questa è una violazione CSP quando sembra non violare la direttiva specificata?

    
posta Andrew 08.03.2017 - 11:25
fonte

1 risposta

0

Per aiutare i futuri utenti, riassumerò le informazioni di aiuto fornite nei commenti da @Sjoerd e @dandavis.

Nella specifica CSP "self" è definito come segue:

'self'

Refers to the origin from which the protected document is being served, including the same URL scheme and port number. You must include the single quotes. Some browsers specifically exclude blob and filesystem from source directives. Sites needing to allow these content types can specify them using the Data attribute.

Questo è parzialmente ambiguo in quanto sembra che lo schema non sia definito. Nell'esempio fornito, Chrome definisce lo schema di sé come http: e view-source:http: come schema diverso.

Firefox sembra aver scelto un'interpretazione diversa in cui view-source:http: è lo stesso schema di http: o almeno che entrambi corrispondono a "sé" nel criterio base-uri.

In Chrome, ti aspetteresti che il rapporto CSP contenga

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

Quale suggerimento sul motivo per cui l'uri è stato bloccato, ma sembra il sorgente della vista: la parte viene rimossa prima di inviare il rapporto CSP.

    
risposta data 14.03.2017 - 13:34
fonte

Leggi altre domande sui tag