.NET HTML Whitelisting (Anti-XSS / Cross Site Scripting)

Ich habe die allgemeine Situation, in der ich Benutzereingaben habe, die eine Teilmenge von HTML verwenden (Eingaben mit tinyMCE). Ich brauche einen serverseitigen Schutz vor XSS-Angriffen und suche nach einem gut getesteten Tool, mit dem die Leute dies tun. Auf der PHP-Seite sehe ich viele Bibliotheken wie HTMLPurifier, die die Arbeit erledigen, aber ich kann anscheinend nichts in .NET finden.

Im Grunde suche ich eine Bibliothek, die nach einer Whitelist mit Tags und Attributen für diese Tags filtert und mit "schwierigen" Attributen wie a: href und img: src das Richtige tut

Ich habe Jeff Atwoods Posten bei gesehenhttp://refactormycode.com/codes/333-sanitize-html, aber ich weiß nicht, wie aktuell es ist. Hat es überhaupt einen Einfluss darauf, was die Site aktuell verwendet? Und auf jeden Fall bin ich mir nicht sicher, ob ich mit dieser Strategie, gültige Eingaben auszudrucken, zufrieden bin.

In diesem Blog-Beitrag wird eine viel überzeugendere Strategie beschrieben:

http://blog.bvsoftware.com/post/2009/01/08/How-to-filter-Html-Input-to-Prevent-Cross-Site-Scripting-but-Still-Allow-Design.aspx

Mit dieser Methode wird der HTML-Code in ein DOM geparst, überprüft und anschließend ein gültiger HTML-Code daraus erstellt. Wenn das HTML-Parsing fehlerhaftes HTML sinnvoll handhaben kann, ist das großartig. Wenn nicht, keine große Sache - ich kann wohlgeformtes HTML verlangen, da die Benutzer den tinyMCE-Editor verwenden sollten. In beiden Fällen schreibe ich, was ich weiß, sicheres, wohlgeformtes HTML um.

Das Problem ist, dass dies nur eine Beschreibung ist, ohne dass eine Verknüpfung zu einer Bibliothek besteht, die diesen Algorithmus tatsächlich ausführt.

Existiert eine solche Bibliothek? Wenn nicht, was wäre eine gute .NET HTML-Parsing-Engine? Und welche regulären Ausdrücke sollten verwendet werden, um eine zusätzliche Validierung durchzuführen? A: href, img: src? Vermisse ich hier noch etwas Wichtiges?

Ich möchte hier kein Buggy-Rad wieder einbauen. Sicherlich gibt es da draußen einige häufig verwendete Bibliotheken. Irgendwelche Ideen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage