HTTP Content-Security-Policy Nonce e caching

8

Qualcuno qui è in grado di chiarire in che modo il caching influisce aggiungendo un nonce=value a tutto il javascript in linea?

Se il nonce deve essere unico e imprevedibile, è necessario disabilitare tutte le cache sul lato server (cioè Varnish, Cloudfront, ecc.) nelle pagine che utilizzano <script nonce="XXXXX"> . Corretto?

Vedi esempio 4 qui per i dettagli.

    
posta user2687991 03.12.2016 - 00:22
fonte

3 risposte

1

If the nonce must be unique and unpredictable, then one would need to disable all server-side (i.e. Varnish, Cloudfront, etc) caching on the pages that use <script nonce="XXXXX">. Correct?

Sì. Devi sempre disabilitare la memorizzazione nella cache di qualsiasi cosa generata dinamicamente (ad esempio, proviene da uno script). Dal momento che non puoi servire staticamente valori univoci e imprevedibili, deve essere fatto da uno script.

    
risposta data 03.12.2016 - 01:49
fonte
1

This can be happily cached by the application server for days without negatively impacting the CSP nonce protection.

No. Il nonce dovrebbe essere univoco per ogni richiesta (nonce = numero usato una volta).

Suppongo che l'unica soluzione sia usare SSI non in cache (lato server include) per i tag di script contenenti il nonce e combinarli con il nonce nell'intestazione di sicurezza del contenuto della risposta o un'altra piccola SSI per il meta http-equiv = -tag "Content-Security-politica".

Questo renderà ogni pagina unica e quindi non memorizzabile nella cache.

    
risposta data 31.12.2018 - 13:19
fonte
0

Dipende quale cache lato server di cui stiamo parlando in quanto ha solitamente molti livelli. Se il server delle applicazioni memorizza nella cache l'HTML per risparmiare su costose query SQL e l'elaborazione dei modelli, è comunque possibile utilizzare nozioni modificando l'output HTML sulla via del ritorno. I tuoi modelli e l'HTML memorizzato nella cache possono contenere segnaposto come questo:

<script nonce="REPLACE_WITH_NONCE">
...
</script>

Questo può essere tranquillamente memorizzato nella cache dal server delle applicazioni per giorni senza influire negativamente sulla protezione nonce CSP.

Il nonce può essere quindi generato dinamicamente sul server web utilizzando OpenResty set_secure_random_alphanum e sostituito nel segnaposto REPLACE_WITH_NONCE con   ngx_http_sub_module

    
risposta data 22.06.2017 - 13:08
fonte

Leggi altre domande sui tag