2010-01-12 14 views
7

Existe una biblioteca exhaustiva Html cleaner/Anti-Xss para .NET que también tiene una lista blanca definida. Sé que Microsofts Anti-Xss es un buen lugar para comenzar, pero necesita una buena lista blanca para etiquetas html permitidas y css. ¿Alguien sabe de algo?¿Existe una implementación .NET de HtmlPurifier (php)

Respuesta

9

¿Qué pasa con la biblioteca Anti-XSS de Microsoft (que ha mencionado)?

Tienen una desinfección exhaustiva de HTML que filtra los caracteres basados ​​en una lista blanca, analiza el HTML, filtra los nodos basándose en una lista blanca y luego regenera el HTML (seguro). Puedes cambiar las listas blancas (ya que el código está abierto), pero no estoy seguro de que quieras.

El uso es simple también:

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

¡Eso es genial! He estado escribiendo mi propio sanitizador cursi ... ¡ya no más! – Chaddeus

+7

Desafortunadamente, el proceso de lanzamiento de la biblioteca AntiXSS es bastante desagradable. La versión 4.2.1 ha introducido cambios de ruptura inesperados masivos, no hay una línea de tiempo para una solución y ninguna fuente para bifurcar. No es algo en lo que quieras confiar. –

1

Según MSDN (ver "Permitir entrada restringida HTML") la mejor manera de desinfectar HTML de entrada es llamar HttpUtility.HtmlEncode() en su entrada y luego vuelva a colocar selectivamente la codificación en todas sus etiquetas de la lista blanca, así:

<%@ 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> 

Véase también this article.

+2

Este contenido es obsoleto y ya no se le realizan mantenimiento. 12 de 200 usuarios lo encontraron útil. –

Cuestiones relacionadas