Non è consigliabile utilizzare gli stili CSS da una fonte di cui non ti fidi, senza alcun tipo di revisione.
Ci sono alcuni rischi, in particolare sui browser più vecchi. Alcuni browser più vecchi forniscono un modo per incorporare Javascript all'interno dei CSS, in modo che il Javascript venga automaticamente eseguito non appena il browser carica il CSS. I browser con questo problema includono IE6, IE7, così come le versioni successive di IE in modalità di compatibilità IE7; anche IE Mobile 8. (Nei vecchi browser, questo è supportato da costrutti CSS come url
, expression(...)
, behavior
, -moz-binding
, -o-link
, e probabilmente di più.) Questa debolezza dei browser più vecchi consente un aggressore che fornisce CSS dannosi per fare qualsiasi cosa possa fare un attacco XSS. L'utilizzo di stili CSS da parte di un utente malintenzionato è fondamentalmente una vulnerabilità XSS autoinflitta.
Fortunatamente, i browser moderni hanno chiuso tutti questi percorsi Javascript. Sfortunatamente, alcuni utenti usano ancora i browser più vecchi, quindi se utilizzi i CSS da una fonte non attendibile, metterai a rischio quegli utenti.
Detto questo, consiglierei di adottare una prospettiva di gestione del rischio. Quanto è grande il rischio? Come ottenere è il vantaggio? In questo caso, sospetto che i benefici varino probabilmente con un leggero rischio, in particolare se si adottano delle attenuazioni per proteggersi. Vorrei raccomandare:
-
Verifica tutti i CSS proposti prima di caricarlo nel tuo sito. Assicurati di aver capito, e non è offuscato. Assicurati che sia pulito, ben organizzato e leggibile. Assicurati che non carichi CSS esterno o altre risorse esterne. Guarda se ti sembra ragionevole. Se noti che stai facendo cose che non capisci, forse non usarle.
-
Controlla la fonte. Sono un utente fidato della tua comunità, che ha trascorso molto tempo sul tuo sito? O sono un nuovo utente di cui hai poca storia? Probabilmente c'è meno rischio da parte di un membro fidato del sito e più rischi da uno sconosciuto.
Se fosse un sito che stavo correndo, probabilmente lo farei. Sì, utilizzerei le attenuazioni di cui sopra per proteggermi, ma non permetterei che la sicurezza interferisse con le cose divertenti.
Altre risorse: sicurezza CSS, da ha.ckers , Ending espressioni, da MSDN