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
econnect-src
aself
piuttosto chenone
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.
Internet Explorer supporta questo? –
dovresti usare un'intestazione http effettiva. –
hai provato 'style-src self 'sha256-JtUhvM7uQO2KX5IEGWxN + rhEyzzsyFelfO2gXvYEuWA ='' o 'style-src URL_OF_YOUR_PAGE 'sha256-JtUhvM7uQO2KX5IEGWxN + rhEyzzsyFelfO2gXvYEuWA =''? – ben