Perché Chrome mi dice che la direttiva CSP 'require-sri-for' è implementata dietro un flag che è attualmente disabilitato?

4

Nella mia politica di sicurezza dei contenuti ho incluso require-sri-for script . Tuttavia, nella console di Chrome viene visualizzato un avviso (non un errore, solo informazioni):

The Content-Security-Policy directive 'require-sri-for' is implemented behind a flag which is currently disabled.

Per quanto posso interpretare, mi sta dicendo che sto cercando di richiedere l'SRI per qualcosa che è disabilitato comunque. Ad esempio, se ho: script-src 'none' , non ci sarebbe alcun punto nell'avere require-sri-for script , dato che comunque tutto lo script è disabilitato.

Tuttavia, l'avviso mostra ancora quando ho script-src 'self' .

Qual è il significato corretto di questo avviso e cosa devo fare per risolverlo?

    
posta jamieweb 24.02.2018 - 17:37
fonte

3 risposte

5

Chrome ti dice che conosce la direttiva ma il browser è attualmente configurato per ignorarlo, indipendentemente dal fatto che venga applicato o meno.

SRI (Integrità della subunità), come Raccomandazione W3C , è da giugno 2016 ma require-sri-for , il Contenuto La direttiva sulla politica di sicurezza è stata introdotta più tardi in Bozza del redattore ad agosto 2016. Le bozze sono < em> fornito solo per discussione e può cambiare in qualsiasi momento. E tali funzionalità sperimentali di solito non sono abilitate di default per fare spazio a cambiamenti nell'implementazione, nelle specifiche o in entrambi.

Ogni volta che Chrome rileva la direttiva in un criterio, prima controlla se le funzionalità sperimentali sono abilitate e analizza la direttiva e il suo valore se sì. Se le funzionalità sperimentali non sono abilitate, registrerà il messaggio visualizzato:

The Content-Security-Policy directive 'require-sri-for' is implemented behind a flag which is currently disabled.

Riferirà il messaggio anche se in seguito gli script verranno disabilitati con script-src 'none' , il messaggio verrà loggato in anticipo nella console durante l'analisi della direttiva. Puoi vederlo nel codice sorgente in CSPDirectiveList::AddDirective metodo .

Per far sparire il messaggio hai due opzioni:

  1. Abilita #enable-experimental-web-platform-features in chrome://flags/ (copia questo chrome://flags/#enable-experimental-web-platform-features e incollalo sul Chrome, riavvia il browser) e verifica la tua politica in modo che tu sia pronto quando viene spedito require-sri-for , tuttavia questo farà scomparire il messaggio solo per una piccolissima percentuale di utenti che hanno abilitato funzionalità sperimentali nei loro browser

  2. Rimuovi require-sri-for dalla tua politica, ad esempio se non ti serve perché stai utilizzando script-src 'none' , e aggiungilo più tardi una volta che desideri verificare gli script

  3. Attendi fino a quando Chrome non abiliterà la funzione per tutti, fino a quando gli utenti non visualizzeranno il messaggio nella console anche se non stai verificando l'integrità degli script caricati

Personalmente utilizzo l'opzione 3, ma ho temporaneamente abilitato il flag per verificare se il sito funzionasse una volta che require-sri-for sarebbe stato pubblicato.

    
risposta data 28.03.2018 - 17:46
fonte
3

Ciò significa che la funzione require-sri-for è disabilitata in chrome://flags . Tuttavia, non sono stato in grado di trovare un flag pertinente che permetta questo.

La documentazione di Mozilla afferma che require-sri-for è stato supportato in Chrome dalla v54, tuttavia ho testato entrambe le ultime versioni di Chrome e Chromium, e non sembra essere il caso.

Questo sembra essere un bug noto in Chrome che al momento non ha correzioni.

Modifica 2018-03-29 : ho modificato la risposta accettata a Michal Špaček - la bandiera del mistero è #enable-experimental-web-platform-features .

    
risposta data 02.03.2018 - 18:21
fonte
1

Quando i produttori di browser lanciano nuove funzionalità, spesso le nascondono prima dietro una bandiera. Gli utenti devono esplicitamente optare per la funzione per usarlo. Questo dà ai venditori una piccola popolazione di utenti su cui "sperimentare". In Chrome, trovi i flag sulla pagina chrome://flags .

Quindi il messaggio che ricevi ti dice che questa funzione non è attiva in Chrome se non la attivi. Dando un'occhiata alla pagina di Mozilla per questa direttiva, dovrebbe essere attiva senza bandiera da Chrome 54 e versioni successive. Firefox richiede comunque un flag, e IE / Edge non lo implementa affatto.

In altre parole, la direttiva require-sri-for CSP offre protezione per alcuni dei tuoi utenti, ma non per tutti. Tuttavia, come tu stesso fai notare, se hai script-src 'none' non ha senso richiedere SRI per gli script che sono comunque vietati.

    
risposta data 26.02.2018 - 11:29
fonte