2010-01-12 4 views
7

Existe-t-il une bibliothèque complète de nettoyeurs Html/Anti-Xss pour .NET disposant également d'une liste blanche définie? Je sais que Microsofts Anti-Xss est un bon point de départ, mais il a besoin d'une bonne liste blanche pour les balises html et css. Est-ce que quelqu'un sait quelque chose?Existe-t-il une implémentation .NET de HtmlPurifier (php)?

Répondre

9

Quel est le problème avec la bibliothèque Anti-XSS de Microsoft (que vous avez mentionnée)?

Ils ont un filtrage HTML complet qui filtre les caractères en fonction d'une liste blanche, analyse le code HTML, filtre les nœuds en fonction d'une liste blanche, puis régénère le code HTML (sécurisé). Vous pouvez changer les listes blanches (puisque le code est ouvert), mais je ne suis pas sûr que vous le vouliez.

L'utilisation est simple aussi:

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

C'est très cool! J'ai écrit mon propre désinfectant cheesy ... pas plus! – Chaddeus

+7

Malheureusement, le processus de publication de la bibliothèque AntiXSS est plutôt hostile. La version 4.2.1 a introduit des changements brusques et inattendus, il n'y a pas de chronologie pour un correctif et pas de source pour fork. Pas quelque chose sur lequel vous voulez compter. –

1

Selon MSDN (voir « Permettre restreint HTML entrée ») la meilleure façon de nettoyer l'entrée HTML est d'appeler HttpUtility.HtmlEncode() sur votre entrée, puis remplacer sélectivement le codage sur tous vos balises de liste blanche comme ceci:

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

Voir aussi this article.

+2

Ce contenu est obsolète et n'est plus maintenue. 12 utilisateurs sur 200 l'ont trouvé utile. –