Richten Sie den Vorschau-HTML-Code des WMD-Editors an der serverseitigen HTML-Validierung aus (z. B. kein eingebetteter JavaScript-Code).

Es gibt viele Fragen zum Stapelüberlauf (z. B.Whitelisting, Verhindern von XSS mit WMD-Steuerung in C # undWMD Markdown und serverseitig) Informationen zur serverseitigen Bereinigung von Markdown, die vom WMD-Editor erstellt wurde, um sicherzustellen, dass der generierte HTML-Code kein bösartiges Skript enthält:

<img onload="alert('haha');" 
   src="http://www.google.com/intl/en_ALL/images/srpr/logo1w.png" />

Aber ich habe keinen guten Weg gefunden, um die Lücke auf der Client-Seite zu schließen. Die Client-Validierung ist natürlich kein Ersatz für die Bereinigung der Validierung auf dem Server, da jeder so tun kann, als wäre er ein Client, und POST Sie böse Markdown. Wenn Sie den HTML-Code auf dem Server bereinigen, kann ein Angreifer den fehlerhaften HTML-Code nicht speichern, sodass er später von keinem anderen Benutzer angezeigt und die Cookies gestohlen oder Sitzungen durch das fehlerhafte Skript gekapert werden können. Es kann also durchaus vorkommen, dass es sich nicht lohnt, Regeln ohne Skript auch im WMD-Vorschaufenster durchzusetzen.

Stellen Sie sich jedoch vor, ein Angreifer hätte eine Möglichkeit gefunden, böswilliges Markdown auf den Server zu übertragen (z. B. einen manipulierten Feed von einer anderen Site oder Inhalte, die hinzugefügt wurden, bevor ein XSS-Fehler behoben wurde). Ihre serverseitige Whitelist, die bei der Übersetzung von Markdown in HTML angewendet wurde, würde normalerweise verhindern, dass dieser fehlerhafte Markdown den Benutzern angezeigt wird. Wenn der Angreifer jedoch jemanden zum Bearbeiten der Seite auffordern kann (z. B. durch Posten eines anderen Eintrags mit der Meldung, dass der böswillige Eintrag einen fehlerhaften Link enthält, und Aufforderung, ihn zu reparieren), werden die Cookies von jedem Bearbeiter gekapert. Dies ist zwar ein Eckfall, aber es kann sich dennoch lohnen, ihn zu verteidigen.

Auch ist es wahrscheinlich eine schlechte Idee, das Client-Vorschaufenster so einzustellen, dass es anderes HTML zulässt, als Ihr Server zulässt.

Das Stack Overflow-Team hat diese Lücke geschlossen, indem es Änderungen an WMD vorgenommen hat. Wie haben sie das gemacht

[ANMERKUNG: Ich habe das bereits herausgefunden, aber es erforderte einige knifflige JavaScript-Fehlerbehebungen. Daher beantworte ich hier meine eigene Frage, um anderen zu helfen, die das Gleiche tun möchten.].

Antworten auf die Frage(4)

Ihre Antwort auf die Frage