Se utilizzo il CSP require-sri-for, lo script e lo stile caricati dal mio sito rimangono accessibili?

1

Uso la seguente regola CSP:

Content-Security-Policy: require-sri-for script style

So che se carico lo stile e lo script da un CDN verrà bloccato se non includo il loro hash.

Ma se servo il mio script e lo stile dal mio dominio, rimarrà accessibile? (CORS è disabilitato)

Chiedo questo perché un visitatore del sito me lo invia:

2017-02-18 21:52:14.622 example.com/:1 Refused to load the stylesheet 'https://example.com/assets/css/main.css' because 'require-sri-for' directive requires integrity attribute be present for all stylesheets.
2017-02-18 21:52:14.632 example.com/:1 Refused to load the script 'https://example.com/assets/js/main.min.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 21:52:14.633 example.com/:1 Refused to load the script 'https://example.com/assets/js/katex.min.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 21:52:14.633 example.com/:1 Refused to load the script 'https://example.com/assets/js/section.min.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 21:52:14.633 example.com/:1 Refused to load the script 'https://example.com/assets/js/canvas.js' because 'require-sri-for' directive requires integrity attribute be present for all scripts.
2017-02-18 22:01:13.667 example.com/:1 Refused to load the stylesheet 'https://example.com/assets/css/main.css' because 'require-sri-for' directive requires integrity attribute be present for all stylesheets.

Questo non suona normale e non potrei riprodurlo su nessun dispositivo.

Modifica

Ho scoperto che è possibile aggiungere un hash SRI allo stile e allo script, ma la domanda rimane, è necessario farlo?

    
posta Hartanto 19.02.2017 - 05:33
fonte

1 risposta

2

require-sri-for non menziona nulla su eccezioni o esenzioni per le origini secondarie di origine uguale, quindi suppongo che tu debba includere l'hash indipendentemente da dove viene caricata la risorsa.

Da MDN:

The HTTP Content-Security-Policy require-sri-for directive instructs the client to require the use of Subresource Integrity for scripts or styles on the page.

E subsection 3.3.3 nella specifica SRI, per quanto riguarda il require-sri-for Direttiva CSP e verifica della richiesta:

3.3.3. Apply algorithm to request

This directive’s pre-request check is as follows:

Given a request (request) and a policy (policy):

  1. Let protected resource types be the result of executing §3.3.2 Parsing require-sri-for on this directive’s value.
  2. If request’s destination is a ASCII case-insensitive match for at least one token in protected resource types, and request’s integrity metadata is the empty string, return "Blocked".

Note: This logic means that request with matched destination and missing integrity metadata will be blocked even if it is not currently possible to set it’s integrity metadata. Such requests are originated by, for example, importScripts(), CSS' @import, or script/style elements without crossorigin content attribute.

     
  1. Invio "Consentito".
  2.   

A seconda del processo di compilazione, è abbastanza facile generare hash per i propri contenuti. C'è un mucchio di strumenti elencati nel articolo di Mozilla Hacks su SRI.

    
risposta data 20.03.2017 - 15:56
fonte

Leggi altre domande sui tag