5

Il problemaMicrosoft Edge non accettare gli hash per i contenuti-Security Policy

Content-Security-politica dovrebbe lista nera sceneggiatura e l'analisi stile di default e lasciare che sulla base di varie istruzioni di cui uno è verificato un hash del uscita prevista Il browser non deve implementare JavaScript o CSS a cui non è stato fornito in anticipo un hash corrispondente. Il codice con un hash corrispondente deve essere eseguito normalmente. Microsoft Edge rifiuta tutti i blocchi in-page di JS/CSS.

  • Istruzioni Visita il link dimostrazione dal vivo di seguito in Microsoft Edge, e anche in qualsiasi altro browser.

  • diretta dimostrazione:http://output.jsbin.com/biqidoqebu

Dimostrazione codice sorgente originale

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; style-src 'sha256-JtUhvM7uQO2KX5IEGWxN+rhEyzzsyFelfO2gXvYEuWA='; script-src https://ajax.googleapis.com 'sha256-iZzrsbzuGxfOaTdnB/E6RQBssyXQRp7W8YtZD2Wg/Rc=';" /> 
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; style-src 'sha256-JtUhvM7uQO2KX5IEGWxN+rhEyzzsyFelfO2gXvYEuWA='; script-src https://ajax.googleapis.com 'sha256-iZzrsbzuGxfOaTdnB/E6RQBssyXQRp7W8YtZD2Wg/Rc=';" /> 
<style>#loading{color:transparent}#loading:after{color:green;content:"Style loaded."}</style> 
</head> 
<body> 
<span id="loading">Hashes loading...</span> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
<script>alert("Script loaded.")</script> 
  • Comportamento previsto: "Style caricato" Il corpo dovrebbe cambiare in un casella di avviso dovrebbe dire "Script caricato.", esterno nal Javascript non dovrebbe generare un errore. La console non mostra problemi.
  • Comportamento effettivo: Corpo bloccato su "Caricamento hash ...". Hash rifiutato, Javascript esterno accettato. Console mostra gli errori:

CSP14304: Unknown source ‘'sha256-JtUhvM7uQO2KX5IEGWxN+rhEyzzsyFelfO2gXvYEuWA='’ for directive ‘style-src’ in - source will be ignored.

CSP14306: No sources given for directive ‘style-src’ for - this is equivalent to using ‘none’ and will prevent the downloading of all resources of this type.

CSP14304: Unknown source ‘'sha256-iZzrsbzuGxfOaTdnB/E6RQBssyXQRp7W8YtZD2Wg/Rc='’ for directive ‘script-src’ in - source will be ignored.

CSP14312: Resource violated directive ‘style-src 'sha256-JtUhvM7uQO2KX5IEGWxN+rhEyzzsyFelfO2gXvYEuWA='’ in : inline style. Resource will be blocked.

CSP14312: Resource violated directive ‘script-src LINK-REMOVED-INSUFFICIENT-REPUTATION-ON-STACKOVERFLOW-SHOULD-BE-THE-GOOGLE-API-URL 'sha256-iZzrsbzuGxfOaTdnB/E6RQBssyXQRp7W8YtZD2Wg/Rc='’ in : inline script. Resource will be blocked.

Tentativo fi xes

  • Verifica gli hash sono corrette: calcolo ricontrollato era binaria, che su di esso. Non c'è molto da fare, altri browser li accettano.
  • valori modificati di default-src e connect-src a self piuttosto che none

non riesco a pensare ad altro per provare.

Aggiornamento 24 ore più tardi: Aggiunto X-Content-Security-politiche per completezza & JSBin URL aggiornati, anche se non fa la differenza per questa particolare situazione.

+0

Internet Explorer supporta questo? –

+0

dovresti usare un'intestazione http effettiva. –

+0

hai provato 'style-src self 'sha256-JtUhvM7uQO2KX5IEGWxN + rhEyzzsyFelfO2gXvYEuWA ='' o 'style-src URL_OF_YOUR_PAGE 'sha256-JtUhvM7uQO2KX5IEGWxN + rhEyzzsyFelfO2gXvYEuWA =''? – ben

risposta

7

EDIT: questo potrebbe non essere corretto. Vedi i commenti sopra.

IE 11 non supporta Content-Security-Policy (solo X-Content-Security-Policy), questo non è aperto. IE 12 supporta CSP, ma non emette nonces/hashes, fallisce chiuso ... a meno che non forniate anche 'unsafe-inline' in un'intestazione Content-Security-Policy.

CSP livello 2 dice "se viene fornito un hash o nonce, ignorare 'unsafe-inline'." questo è per la retrocompatibilità dal momento che i browser più vecchi non riusciranno a trovare il 'unsafe-inline' ma non i nonces/hash. Vedi http://www.w3.org/TR/CSP2/#directive-script-src

+2

La spiegazione potrebbe non essere del tutto corretta, ma l'aggiunta di "in-safe" è la soluzione. Non lo sapevo degradato con grazia, almeno il sito funziona di nuovo. Non penso che ci sia una spiegazione, sto indovinando la regressione caratteristica non intenzionale. L'ho segnalato come un bug, grazie per averci pesato. – StackOverflowAcc

2

http://caniuse.com/#feat=contentsecuritypolicy

http://caniuse.com/#feat=contentsecuritypolicy2

IE bordo non supporta contenuti la politica di sicurezza di livello 2, e hash-source appartiene al livello 2.

+0

Ciò potrebbe essere la spiegazione, ma l'esempio funziona correttamente in IE11 quindi le informazioni sono troppo ampie o parzialmente mancanti. Non so come sia nato Edge, è possibile che sia derivato da IE11 prima che gli hash CSP fossero implementati? – StackOverflowAcc

+0

@StackOverflowAcc Quello che ho letto dal primo link è IE che lo supporta con l'intestazione 'X-Content-Security-Policy', puoi provarlo. –

+0

Questo è solo per IE10-11. Comunque, stavo già usando entrambi e ho dimenticato di includerlo nella mia submission! X-Content-Security-Policy Non fa alcuna differenza con Edge e non sembra necessario neanche per IE11 su Windows 10. – StackOverflowAcc

Problemi correlati