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
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);
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("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
Response.Write(sb.ToString());
}
</script>
Vedere anche this article.
Questo contenuto è obsoleto e non è più il mantenimento. 12 utenti su 200 lo hanno trovato utile. –
È molto bello! Ho scritto il mio igienizzante disinfettante ... non più! – Chaddeus
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. –