Einfaches HTML-Desinfektionsprogramm in Javascript

Ich bin auf der Suche nach einem einfachen HTML-Desinfektionsprogramm, das in JavaScript geschrieben ist. Es muss nicht 100% XSS-sicher sein.

Ich implementiere Markdown und den WMD Markdown Editor (The SO master branch von github) auf meiner Website. Das Problem ist, dass der in der Live-Vorschau angezeigte HTML-Code nicht gefiltert wird, wie hier auf SO. Ich bin auf der Suche nach einem einfachen / schnellen HTML-Desinfektionsprogramm, das in JavaScript geschrieben ist, damit ich den Inhalt des Vorschaufensters filtern kann.

Kein vollständiger Parser mit vollständigem XSS-Schutz erforderlich. Ich sende die Ausgabe nicht an den Server zurück. Ich sende den Markdown an den Server, auf dem ich ein ordnungsgemäßes, vollständiges HTML-Desinfektionsprogramm verwende, bevor ich das Ergebnis in der Datenbank speichere.

Google ist für mich absolut nutzlos. Ich bekomme gerade hunderte (oftmals falsche) Artikel darüber, wie man Javascript aus benutzergeneriertem HTML in allen Arten von serverseitigen Sprachen herausfiltert.

AKTUALISIEREN

Ich werde ein bisschen besser erklären, warum ich das brauche. Meine Website hat einen Editor, der dem hier auf StackOverflow sehr ähnlich ist. Es gibt einen Textbereich zum Eingeben der MarkDown-Syntax und ein Vorschaufenster darunter, in dem Sie sehen, wie es aussehen wird, nachdem Sie es gesendet haben.

Wenn der Benutzer etwas einreicht, wird es im MarkDown-Format an den Server gesendet. Der Server konvertiert es in HTML und führt dann einen HTML-Bereinigungsdienst aus, um das HTML zu bereinigen. MarkDown erlaubt willkürliches HTML, also muss ich es aufräumen. Der Benutzer gibt beispielsweise Folgendes ein:

<script>alert('Boo!');</script>

Der MarkDown-Konverter berührt es nicht, da es sich um HTML handelt. Das HTML-Desinfektionsprogramm entfernt es, sodass das Skriptelement nicht mehr vorhanden ist.

Dies ist jedoch nicht der Fall im Vorschaufenster. Das Vorschaufenster konvertiert MarkDown nur in HTML, bereinigt es jedoch nicht. Das Vorschaufenster enthält also ein Skriptelement. Dies bedeutet, dass sich das Vorschaufenster vom tatsächlichen Rendering auf dem Server unterscheidet.

Ich möchte dieses Problem beheben, daher benötige ich ein schnelles und unsauberes JavaScript-HTML-Desinfektionsprogramm. Etwas Einfaches mit Blacklisting von Grundelementen / Attributen und Whitelisting ist ausreichend. Es muss nicht XSS-sicher sein, da der XSS-Schutz vom serverseitigen HTML-Desinfektionsprogramm ausgeführt wird.

Dies soll nur sicherstellen, dass das Vorschaufenster in 99,99% der Fälle mit dem tatsächlichen Rendering übereinstimmt, was für mich gut genug ist.

Kannst du helfen? Danke im Voraus!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage