Questo approccio non è identico a StackExchange, ma ho trovato la libreria AntiXSS 4.x in un modo semplice per disinfettare l'input per consentire l'HTML "sicuro".
http://www.microsoft.com/en-us/download/details.aspx?id=28589 È possibile scaricare una versione qui, ma l'ho collegata per l'utile file DOCX. Il mio metodo preferito è utilizzare il gestore pacchetti NuGet per ottenere l'ultimo pacchetto AntiXSS.
È possibile utilizzare l'assembly HtmlSanitizationLibrary trovato nella libreria 4.x di AntiXss. Si noti che GetSafeHtml() si trova in HtmlSanitizationLibrary, sotto Microsoft.Security.Application.Sanitizer.
content = Sanitizer.GetSafeHtml(userInput);
Questo può essere fatto prima di salvare nel database. Il vantaggio è la rimozione immediata di contenuti dannosi e non doversi preoccupare di ciò quando si esegue l'output. Lo svantaggio è che non gestirà alcun contenuto di database esistente e sarà necessario applicarlo ogni volta che si effettuano gli aggiornamenti del database.
L'approccio alternativo consiste nell'utilizzare questo metodo ogni volta che si emette contenuto.
Mi piacerebbe sapere qual è l'approccio preferito.
fonte
2012-06-23 07:13:02
Sto trovando che questo è troppo aggressivo per la pulizia dell'input WYSIWYG. I collegamenti sono ridotti a solo . –
Ma se stai parlando di permettere tag HTML, allora una codifica AntiXss non è quello che vuoi, vero?Ciò converrebbe, diciamo a < a &rt; (cioè, codificalo in modo che non sia più un tag HTML). – McGarnagle
Corretto - Non voglio codificare AntiXss. Tuttavia, la libreria AntiXss include la libreria Sanitization. Tuttavia, sembra che la versione 4.2 "abbia rotto tutto". Questo link su StackOverflow collega a molte cose utili: http://stackoverflow.com/questions/3959136/antixss-htmlencode-vs-antixss-getsafehtmlfragment che include questa soluzione alternativa che utilizza una lista bianca (e potresti personalizzarla tu stesso) per disinfettare: http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/ –