2010-05-06 11 views
5

Ich versuche, Wege zu finden, um die Eingabe des WMD Editors zu bereinigen.WMD Editor Bereinigen

Insbesondere versuche ich, HTML-Tags nur in den <code> Tags, die WMD erzeugt, zur Verfügung zu stellen. Ist das möglich?

Mein Problem ist, dass der folgende Code als HTML gerendert wird, die potentiell XSS attacks ist.

Zum Beispiel <a onmouseover="alert(1)" href="#">read this!</a>

Der obige Code macht normalerweise sowohl im Vorschaumodus und wenn in der Datenbank gespeichert.

Ich merke, dass Stack Overflow scheint dieses Problem nicht zu haben. Derselbe Code wird nur als Text gerendert.

Ich stelle fest, dass das Stack Overflow-Team ihren Code in http://refactormycode.com/codes/333-sanitize-html freigegeben hat. Muss ich wirklich C# verwenden, um WMD dafür zu sanieren?

+1

niemand kann meine Frage beantworten? hat das noch niemand gemacht? –

Antwort

1

Wenn Sie schlechte Skripts von WMD auf der Client-Seite blockieren möchten, werfen Sie einen Blick auf meine Antwort hier: Align the WMD editor's preview HTML with server-side HTML validation (e.g. no embedded JavaScript code).

Es zeigt, wie eine clientseitige Whitelist im WMD-Editor implementiert wird, um WMDs Vorschaufeld-HTML auf bekanntermaßen sichere HTML-Elemente und bekanntermaßen sichere HTML-Attribute zu beschränken. Es macht die Validierung nach WMD erzeugt seinen HTML, also selbst wenn es einen Fehler in der HTML-Erzeugung des WMD-Editors gibt, der es erlaubt, dass schlechtes Skript durchkommt, wird der Whitelist-Blocker es fangen. Dieser Code basiert auf der Implementierung der gleichen Validierung durch StackOverflow.com.

Das heißt, Sie brauchen auch serverseitige Validierung zu (Wenn Sie PHP verwenden, ist HTML Purifier eine gute Wahl), denn selbst wenn Sie den Client beheben, verhindert das nicht, dass ein Angreifer einen Browser simuliert und Speichern böswilliger Markdown durch POST-es auf Ihrem Server. Eine clientseitige WMD-Previewer-Validierung ist also eigentlich nicht erforderlich, außer um sich gegen einen obskuren Fall zu verteidigen, in dem ein Angreifer einen kompromittierten Markdown auf den Server erreicht, und einen Site-Moderator zum Editieren der Seite überzeugt. In diesem Fall verhindert die Überprüfung der Client-WMD-Vorschau möglicherweise, dass ein Angreifer die gesamte Site übernimmt.

Auch die Validierung auf der Clientseite kann hilfreich sein, denn dann wissen Sie, dass die vom Client zugelassenen Tags und HTML auch auf dem Server zulässig sind. Stellen Sie sicher, dass die serverseitige Whitelist mit der Client-Whitelist synchronisiert wird. Die Whitelist von StackOverflow lautet here, wenn Sie ein Beispiel wünschen.