Gli script e gli stili inline sono solo un tipo di linguaggio (CSS / Javascript) incorporato in un'altra lingua (HTML). Perché non sono consentiti per impostazione predefinita nella politica di sicurezza dei contenuti?
Gli script e gli stili inline sono solo un tipo di linguaggio (CSS / Javascript) incorporato in un'altra lingua (HTML). Perché non sono consentiti per impostazione predefinita nella politica di sicurezza dei contenuti?
Quindi perché non consentire il JS in linea? Perché ciò negherebbe l'intero vantaggio di un CSP! L'obiettivo è fermare XSS - iniezione di es. JS in una pagina HTML. Poiché è quasi impossibile distinguere tra gli script che sono legittimamente mescolati in HTML e gli script che sono stati iniettati maliziosamente in HTML, il modo migliore per fermare XSS è semplicemente non consentire alcun script inline. Sì, è "solo una sorta di linguaggio incorporato in un altro", ma che mescola il rischio di essere tossici.
Allora perché bloccarlo per impostazione predefinita? Perché la filosofia è bloccare tutto per impostazione predefinita e quindi elencare ciò che dovrebbe essere consentito. La white list invece della blacklist riduce il rischio che qualcosa scivoli accidentalmente.
Content-Security-Policy è usato per prevenire l'injection script injection (XSS). Se lo script inline fosse consentito, un utente malintenzionato potrebbe comunque utilizzare XSS per iniettare lo script nella pagina esistente. Ecco perché è negato di default e chiunque usi lo script inline dovrebbe o rimuoverlo o limitarlo ad aree protette o proteggere lo script contro le modifiche usando nonces o hash .
Leggi altre domande sui tag xss content-security-policy