2010-06-28 14 views
7

Con .net 4 c'è un nuovo <%:%> enclosure di script che è come <% =%> ma fa una codifica html. Le persone stanno incoraggiando l'uso di questa nuova sintassi.<%: %> contro Microsoft la libreria anti XSS

La mia domanda è, %:%> protezione migliore rispetto a XSS o l'utilizzo della libreria Microsoft Anti XSS?

Una persona di sicurezza di Microsoft, una volta mi ha detto utilizzare mai solo Codifica HTML come non protegge molto bene e che avrei dovuto sempre utilizzare la libreria anti XSS (o un'altra libreria). È ancora vero con <%:%>? Oppure posso usare con fiducia lo <%:%> sapendo che proteggerà la mia app da XSS come dicono le persone?

risposta

9

HttpUtility.HtmlEncode utilizza una lista nera (principio di esclusioni) approccio alla codifica, che lascia potenzialmente la porta socchiusa per scopre di recente exploit in futuro. Il Anti-XSS library (ora conosciuta come la Biblioteca Web Protection e include il codice per mitigare SQL injection troppo) utilizza un approccio whitelist (principio di inclusioni), che chiude la porta un po 'oltre e dovrebbe fornire una maggiore sicurezza.

<%: ... %> è solo una scorciatoia per <%= Server.HtmlEncode(string) %> e pertanto fornisce la sicurezza dell'encoder utilizzato nell'applicazione.

È possibile utilizzare qualsiasi encoder ti piace con la nuova <%: ... %> sintassi e Phil Haack ha un grande post su hooking up the Anti-Xss library as the default encoder. Tieni presente che attualmente la libreria 3.1 Anti-XSS richiede un livello medio di fiducia per l'esecuzione: questo è stato affrontato per una versione futura.

+0

Non lo sapevo riguardo l'aggancio di <%: %> a un altro codificatore. E 'molto bello. – dtc

1

La nuova sintassi dovrebbe essere utilizzato solo per sfuggire il contenuto del testo grezzo in HTML. EDIT: e attributi.

Per attributi, JavaScript, e in altri contesti, si dovrebbe comunque utilizzare la libreria Anti-XSS,

+0

La libreria Anti-XSS fornisce una codifica più sicura per la codifica HTML e degli attributi pure – orip