2012-07-08 9 views
6

MS AntiXSS (v4.2.1) Sanitizer.GetSafeHtmlFragment(string) Methode entfernt <br> und <br /> Tags aus meiner Eingabe. Soll das passieren? Gibt es einen Weg dahin?Soll Sanitizer.GetSafeHtmlFragment <br> Elemente entfernen?

Es scheint \n und \r Zeichen auch zu entfernen, so kann ich Replace() nicht aufrufen, nachdem der Desinfizierer seine Arbeit erledigt hat.

Antwort

7

Die Version 4.2.x wurde durch eine Sicherheitslücke verursacht, die genau im HTML-Desinfektor erkannt wurde. Weitere Informationen über diese Tatsache:

Allerdings scheint es, dass die Verwundbarkeit neben Festsetzung der Sanitizer geändert wurde viel aggressiver auf den Punkt zu sein, fast unbrauchbar ist. Es gibt ein gemeldetes Problem in der WPL CodePlex-Site (GetSafeHtmlFragment replacing all html tags).

Wenn Ihr Problem nur mit <br> Tag ist und Sie mit AntiXSS Desinfektionsmittel bleiben möchten, dann können Sie eine hässliche Problemumgehung implementieren, die Ihre Eingabe vorverarbeitet und dann das Ergebnis des Desinfektionsmittels nachbearbeitet.

So etwas wie dieser (Code nur zu Veranschaulichungszwecken):

static void Main(string[] args) 
{ 
    string input = "<br>Hello<br/>World!"; 

    input = EscapeHtmlBr(input); 
    var result = Sanitizer.GetSafeHtmlFragment(input); 
    result = UnescapeHtmlBr(result); 

    Console.WriteLine(result); 
} 

const string BrMarker = @"|br|"; 

private static string UnescapeHtmlBr(string result) 
{ 
    result = result.Replace(BrMarker, "<br />"); 

    return result; 
} 

private static string EscapeHtmlBr(string input) 
{ 
    input = input.Replace("<br>", BrMarker); 
    input = input.Replace("<br />", BrMarker); 
    input = input.Replace("<br/>", BrMarker); 

    return input; 
} 
+2

Dank ... das war, was ich "in der Hoffnung" für war. Es sieht jedoch so aus, als ob die AntiXSS-Bibliothek jetzt im Grunde nutzlos ist. Ich wollte es in einem WYSIWYG-Textbereich verwenden ... es bereinigt zu viel. ; ( – Chaddeus

+1

) Nur hinzufügen, es scheint, wenn Sie die weniger aggressive Funktionalität wollen, müssen wir die 'HTMLsantisationLibrary.dll' verwenden, die Teil des AjaxControlToolkit ist - http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/HTMLEditorExtender/ HTMLEditorExtender.aspx – RemarkLima

Verwandte Themen