In Podcast 58 (circa 20 minuti a), Jeff lamenta i problemi di HTML.Encode()
e Joel parla di utilizzare il sistema di tipo ad avere le stringhe ordinarie e HTMLStrings:Prevenire XSS exploit utilizzando il sistema di tipo Joel suggerito
Un breve cenno politico sul male dei motori di visualizzazione che non riescono a codificare HTML per impostazione predefinita. Il problema con questa scelta di progettazione è che non è "sicuro per impostazione predefinita", che è sempre la scelta errata per un framework o API. Dimentica di codificare un po 'di dati immessi dall'utente in una singola area puzzolente nella tua app Web e sarai totalmente di proprietà di XSS. Credici. Lo so perché è lo successo a noi. Più volte!
Joel sostiene che, con un linguaggio fortemente tipizzato e il giusto quadro , è possibile (in teoria) di eliminare completamente XSS - questo richiederebbe utilizzando uno specifico i dati tipo, un tipo che è il tuo unico modo per inviare dati al browser. Quel tipo di dati sarebbe stato convalidato al momento della compilazione .
I commenti alla menzione post sul blog utilizzando l'analisi statica per trovare potenziali debolezze. Il transcript Wiki non è ancora finito.
È possibile implementare il suggerimento di Joel senza disporre di un nuovo framework ASP.NET?
Potrebbe essere possibile implementarlo semplicemente sottoclassando ogni controllo e applicando nuove interfacce basate su HTMLString? Se la maggior parte delle persone già sottoclasse i controlli per poter meglio iniettare funzionalità specifiche del sito, non sarebbe abbastanza facile da implementare?
Vale la pena farlo invece di investire nell'analisi statica?
Credo sia il mio punto. In molte applicazioni ASP.NET che ho utilizzato OGNI controllo era già sottoclasse da quando abbiamo implementato I18n e estensioni speciali per la convalida e altre cose. –