Ich habe die häufige Situation, wo ich Benutzereingabe, die eine Teilmenge von HTML (Eingabe mit tinyMCE) verwendet haben. Ich brauche einen serverseitigen Schutz gegen XSS-Angriffe und bin auf der Suche nach einem gut getesteten Tool, das Menschen verwenden, um dies zu tun. Auf der PHP-Seite sehe ich viele Bibliotheken wie HTMLPurifier, die diese Aufgabe erfüllen, aber ich kann scheinbar nichts in .NET finden.
Ich bin im Grunde auf der Suche nach einer Bibliothek zu filtern, um eine Whitelist von Tags, Attribute auf diese Tags, und tut das Richtige mit "schwierigen" Attribute wie a:href und img:src
Ich habe den Beitrag von Jeff Atwood auf http://refactormycode.com/codes/333-sanitize-html aber ich weiß nicht, wie aktuell sie ist. Hat es irgendeinen Bezug zu dem, was die Website derzeit verwendet? Und auf jeden Fall bin ich mir nicht sicher, ob ich mit dieser Strategie, gültige Eingaben mit regexp herauszufiltern, zufrieden bin.
In diesem Blogbeitrag wird eine viel überzeugendere Strategie vorgestellt:
Bei dieser Methode wird das HTML tatsächlich in ein DOM geparst, dieses validiert und dann gültiges HTML daraus neu aufgebaut. Wenn das HTML-Parsing vernünftig mit fehlerhaftem HTML umgehen kann, dann ist das großartig. Wenn nicht, kein Problem - ich kann wohlgeformtes HTML verlangen, da die Benutzer den tinyMCE-Editor verwenden sollten. In jedem Fall schreibe ich um, was ich als sicheres, wohlgeformtes HTML kenne.
Das Problem ist, dass dies nur eine Beschreibung ist, ohne einen Link zu einer Bibliothek, die diesen Algorithmus tatsächlich ausführt.
Gibt es 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 a:href, img:src durchzuführen? Übersehe ich hier noch etwas Wichtiges?
Ich möchte hier kein Buggy-Rad neu implementieren. Sicherlich gibt es da draußen einige häufig verwendete Bibliotheken. Irgendwelche Ideen?