2010-01-12 3 views
7

C'è una libreria Html cleaner/Anti-Xss completa per .NET che ha anche una whitelist definita. So che Microsofts Anti-Xss è un buon punto di partenza, ma ha bisogno di una buona whitelist per i tag html e css consentiti. Qualcuno sa qualcosa?Esiste un'implementazione .NET di HtmlPurifier (php)

risposta

9

Cosa c'è che non va nella libreria Microsoft Anti-XSS (che hai menzionato)?

Hanno un completo sanitizzazione HTML che filtra i caratteri in base a una lista bianca, analizza il codice HTML, filtra i nodi in base a una lista bianca e quindi rigenera l'HTML (sicuro). Puoi cambiare le liste bianche (dato che il codice è aperto), ma non sono sicuro che tu voglia.

L'uso è semplice troppo:

var sanitizedHtml = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(inputHtml); 
+0

È molto bello! Ho scritto il mio igienizzante disinfettante ... non più! – Chaddeus

+7

Purtroppo il processo di rilascio della libreria AntiXSS è abbastanza ostile. La versione 4.2.1 ha introdotto enormi modifiche improvvise, non ci sono timeline per una correzione e nessuna fonte da fork. Non è qualcosa su cui vuoi fare affidamento. –

1

Secondo MSDN (vedere "Consentire Ingresso limitato HTML") il modo migliore per disinfettare input HTML è chiamare HttpUtility.HtmlEncode() sul vostro ingresso e quindi sostituire selettivamente la codifica su tutti i tag whitelist in questo modo:

<%@ Page Language="C#" ValidateRequest="false"%>  
<script runat="server">  
    void submitBtn_Click(object sender, EventArgs e) 
    { 
    // Encode the string input 
    StringBuilder sb = new StringBuilder(
          HttpUtility.HtmlEncode(htmlInputTxt.Text)); 
    // Selectively allow and <i> 
    sb.Replace("&lt;b&gt;", "<b>"); 
    sb.Replace("&lt;/b&gt;", ""); 
    sb.Replace("&lt;i&gt;", "<i>"); 
    sb.Replace("&lt;/i&gt;", ""); 
    Response.Write(sb.ToString()); 
    } 
</script> 

Vedere anche this article.

+2

Questo contenuto è obsoleto e non è più il mantenimento. 12 utenti su 200 lo hanno trovato utile. –