2012-06-23 6 views

risposta

2

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.

+1

Sto trovando che questo è troppo aggressivo per la pulizia dell'input WYSIWYG. I collegamenti sono ridotti a solo . –

+1

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/ –

0

È possibile provare il parser JSoup che, oltre a disinfettare l'input HTML, fornisce anche molte funzionalità immediatamente disponibili. Puoi visitare http://jsoup.org/ per ulteriori dettagli sul JSoup e scaricare il file binario da lì. Fornisce il metodo DOM per attraversare l'albero HTML e ottenere gli elementi desiderati.

Anche se l'igienizzazione del codice generato in HTML per impedire l'attacco XSS è una buona pratica, ma consiglio vivamente di evitare l'uso di qualsiasi parser per evitare l'attacco XSS disinfettando l'input HTML. Se il tuo albero HTML è molto grande allora il tempo di risposta aumenterebbe di moltiplica.Iniziato a disinfettare la tua struttura HTML dovresti assicurarti che qualunque utente stia entrando nel FORM sia corretto e secondo il valore atteso.

È possibile visitare www.owasp.org per saperne di più su come evitare l'attacco XSS. Il sito fornisce possibili cheat sheet per garantire che il proprio albero HTML sia libero da qualsiasi attacco XSS.

0

ASP.NET HttpUtility.Htmlencode() lo rende adatto a voi. Ma se si desidera bloccare script pericolosi, per prima cosa NON inserire nel proprio database. Per prima cosa, pulisci il testo HTML prima di inserirlo nel database.

ho trovato una classe che lo faccia per voi: http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/

Funziona bene ed è possibile aggiungere nuovi tag e attributi alla whitelist personalizzate del disinfettante.

Nota: Microsoft Sanitizer e Anti-XSS Library non sono stati utili per me. Forse puoi anche provarli.

Problemi correlati