2012-06-23 3 views

Antwort

2

Dieser Ansatz ist nicht identisch mit StackExchange, aber ich fand die AntiXSS 4.x-Bibliothek auf eine einfache Weise, die Eingabe zu bereinigen, um "sicheren" HTML zu ermöglichen.

http://www.microsoft.com/en-us/download/details.aspx?id=28589 Sie können hier eine Version herunterladen, aber ich habe es für die nützliche DOCX-Datei verknüpft. Meine bevorzugte Methode ist die Verwendung des NuGet-Paketmanagers, um das neueste AntiXSS-Paket zu erhalten.

Sie können die Assembly HtmlSanitizationLibrary in der 4.x AntiXss-Bibliothek verwenden. Beachten Sie, dass sich GetSafeHtml() in der HtmlSanitizationLibrary unter Microsoft.Security.Application.Sanitizer befindet.

content = Sanitizer.GetSafeHtml(userInput); 

Dies kann vor dem Speichern in der Datenbank erfolgen. Der Vorteil besteht darin, schädliche Inhalte sofort zu entfernen und sich bei der Ausgabe keine Gedanken darüber machen zu müssen. Der Nachteil besteht darin, dass keine vorhandenen Datenbankinhalte verarbeitet werden. Sie müssen dies jedes Mal anwenden, wenn Sie Datenbankaktualisierungen durchführen.

Der alternative Ansatz besteht darin, diese Methode bei jeder Ausgabe von Inhalten zu verwenden.

Ich würde gerne hören, was der bevorzugte Ansatz ist.

+1

Ich finde, dass dies zu aggressiv ist, um den WYSIWYG-Eingang zu bereinigen. Links werden auf reduziert. –

+1

Richtig - Ich möchte nicht AntiXss kodieren. Die AntiXss-Bibliothek enthält jedoch die Sanitization-Bibliothek. Es scheint jedoch, dass Version 4.2 "alles kaputt gemacht hat". Dieser Link auf StackOverflow verlinkt auf viele nützliche Dinge: http://stackoverflow.com/questions/3959136/antixss-htmlencode-vs-antixss-getsafehtmlfragment einschließlich dieser Problemumgehung, die eine weiße Liste verwendet (und Sie könnten es selbst anpassen) zu sanieren: http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/ –

0

Sie können versuchen JSoup Parser, die neben der Bereinigung Ihrer HTML-Eingabe wird auch viele Funktionen aus der Box bieten. Sie können http://jsoup.org/ für weitere Details auf der JSoup besuchen und die Binärdatei von dort herunterladen. Es bietet DOM-Methode, um durch Ihre HTML-Struktur zu durchlaufen und gewünschte Elemente zu erhalten.

Obwohl die Bereinigung Ihres HTML-generierten Codes zur Verhinderung von XSS-Angriffen eine gute Übung ist, würde ich jedoch dringend davon abraten, einen Parser zu verwenden, um XSS-Attach durch Bereinigung Ihrer HTML-Eingaben zu vermeiden. Wenn Ihr HTML-Baum sehr groß ist, würde die Antwortzeit vielseitiger werden.In der Absicht, Ihren HTML-Baum zu bereinigen, sollten Sie sicherstellen, dass jeder Benutzer, der in das FORM-Formular eintritt, korrekt ist und dem erwarteten Wert entspricht.

Sie können www.owasp.org besuchen, um mehr darüber zu erfahren, wie Sie XSS-Angriffe vermeiden können. Die Website bietet Ihnen mögliche Spickzettel, um sicherzustellen, dass Ihr HTML-Baum frei von XSS-Angriffen ist.

0

ASP.NET HttpUtility.Htmlencode() macht es für Sie. Aber wenn Sie gefährliche Skripte blockieren möchten, zuerst NICHT es in Ihre Datenbank einfügen. Reinigen Sie zuerst den HTML-Text, bevor Sie ihn in die Datenbank einfügen.

fand ich eine Klasse, die es für Sie tun: http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/

Es funktioniert gut, und Sie können neue Tags und Attribute, um benutzerdefinierte weißen Liste der Sanitizer.

Hinweis: Microsoft Sanitizer und Anti-XSS-Bibliothek war nicht nützlich für mich. Vielleicht kannst du sie auch ausprobieren.

Verwandte Themen