Attualmente sto usando Modernizr su tutti i miei siti e risulta che per come funziona richiede gli stili unsafe-inline
. Non sto già permettendo script inline e valutazione non sicura per gli script. Sei curioso di sapere quali rischi per la sicurezza ci sono per consentire gli stili in linea?CSP style-src: 'non sicuro-inline' - ne vale la pena?
risposta
Consentire stili in linea ti rende suscettibile a un "altro XSS". Attacchi per lo stile di Cross Site.
L'idea è che in tutti i punti in cui un utente può inserire un attributo di stile nel documento, è possibile modificare l'aspetto della pagina come preferiscono. Elencherò un paio di potenziali attacchi ordinati aumentando la gravità:
- Potrebbero trasformare la pagina in rosa e renderla un po 'sciocca.
- Potrebbero modificare il testo della tua pagina, facendo sembrare che stai dicendo qualcosa di offensivo che potrebbe offendere il pubblico dei lettori.
- Potrebbero rendere i contenuti generati dagli utenti, come un collegamento che hanno fornito, al di fuori dei normali luoghi in cui le persone si aspettano di vedere il contenuto dell'utente, facendolo sembrare ufficiale. (ad esempio, sostituendo un pulsante "Accedi" sul tuo sito con il proprio link).
- Utilizzando regole di stile attentamente predisposte, è possibile inviare qualsiasi informazione inclusa nella pagina a domini esterni ed esporre o altrimenti utilizzare tali dati maliziosamente contro i propri utenti.
Il quarto esempio, con le informazioni che vengono trapelato a domini esterni potrebbero essere del tutto impedito, nonostante la unsafe-inline
fornito a garantire la sua altre regole CSP non consentono alcun tipo di richiesta per andare in un dominio non attendibile o jolly. Ma i primi 3 saranno sempre possibili se manchi di bloccare un attributo di stile da qualche parte.
Mike West ha fatto un buon talk su questo per CSSConf alcuni anni fa per alcuni altri esempi.
- 1. WCF su Linux: ne vale la pena
- 2. Non associare un buffer WebGL, ne vale la pena?
- 3. MVC: la minificazione HTML ne vale la pena?
- 4. Android anti-crack, ne vale la pena lo stesso?
- 5. Ne vale la pena gzip di file js?
- 6. SIMD ne vale la pena? C'è un'opzione migliore?
- 7. GWT e Spring MVC, ne vale la pena?
- 8. jQuery UI + ASP.NET UpdatePanel - Ne vale la pena?
- 9. Riciclare le visualizzazioni in una lista, ne vale la pena?
- 10. L'MVP vale sempre la pena?
- 11. Vale la pena utilizzare JDEE?
- 12. Vale la pena imparare Tkinter?
- 13. Vale la pena provare MonetDB?
- 14. GroupLayout: vale la pena imparare?
- 15. Ne vale davvero la multi-AZ RDS?
- 16. Vale la pena imparare Perl 6?
- 17. La moltiplicazione di matrice 3x3 di Laderman con solo 23 moltiplicazioni, ne vale la pena?
- 18. Ne vale la pena per abilitare la compressione dinamica in IIS7?
- 19. Vale la pena utilizzare sqlalchemy-migrate?
- 20. Vale la pena imparare il linguaggio assembly?
- 21. MyEclipse: vale ancora la pena utilizzarlo?
- 22. VTune vale la pena considerare per Delphi?
- 23. Telerik openaccess ORM vale la pena imparare?
- 24. Vale la pena di imparare ASP classico?
- 25. Vale la pena imparare Ruby On Rails
- 26. Vale la pena imparare GNU Make?
- 27. Agile Toolkit, vale la pena usare?
- 28. C#: ObjectTrackingEnabled = false ne vale la pena per le piccole operazioni?
- 29. Che cosa offre in pratica lo sviluppatore? E ne vale la pena?
- 30. Strutture imbottite che utilizzano __attribute __ (__ packed__), ne vale davvero la pena?
Hey bel post, sono curioso però, e se fosse un'app mobile (scaricata)? sarebbe considerata una minaccia? Immagino che in quel caso sarebbero in grado di creare la loro app e fare alcune cose css alla loro app, o? – mattias
Questa sarebbe un'app stile webview? Sarebbe lo stesso vettore di attacco del normale contenuto del browser. Non è l'utente che sta attaccando se stesso, ma piuttosto un'entità esterna (quindi "Cross-Site") che modifica l'esperienza che intendevi per loro. Questo può essere dirottato da JS/CSS di terze parti (stai verificando tutto ciò che impacchetta?), Contenuti non correttamente disinfettati o vari altri vettori come immagini che non sono ancora abbastanza intelligenti da capire correttamente. – jeteon
Sembra che con i siti di wordpress la maggior parte dei temi non sia codificata per essere compatibile con un CSP, quindi si finisce per dover utilizzare dati non sicuri, non sicuri e non sicuri, altrimenti l'intero sito si rompe e sembra orribile. Pur comprendendo che l'utilizzo di una valutazione non sicura e non sicura può aprirti agli attacchi XSS, "X-XSS-Protection \t 1; mode = block" non aiuta già a impedirlo? Sembra che il tema di wordpress e gli autori di plugin abbiano molto da fare per rendere le loro cose conformi a CSP. – MitchellK