2009-07-23 10 views
2

Ich habe die letzten 2 Tage auf WMD und Markdown gearbeitet, und ich finde nicht die Lösung für Aktien Daten mit Sicherheit. Ich möchte, dass Benutzer in der Lage sind, HTML/XML < Code> (mit WMD) auf meiner Website zu veröffentlichen.WMD Markdown und Server-Seite

Momentan lagere ich Daten im Markdown-Format, aber wenn ich JavaScript deaktiviere, kann der Benutzer einfach XSS drücken. Wenn ich strip_tags oder html_entities alle Daten verliere ich den Benutzer HTML/XML < Code>. Wie kann ich es tun?

Meiner Meinung nach muss ich html_entities nur den Code zwischen Pre/Pre, aber wie ?! Meine Daten befinden sich in Markdown.

Nachdem, was kann ich XSS verbieten tun Attribute:

<img src="javascript:alert('xss');" /> 

Antwort

2

zu "sauberen" Ihr HTML, können Sie ein Tool wie HTML Purifier

Grundsätzlich verwenden konnte, können Sie angeben, welche Tags/Attribute sind erlaubt, ein nur behält diese.

Es produziert auch gültigen (X) HTML-Code als Ausgang - was schön ist.

Sie auf der demo page sehen kann, gibt es ein Beispiel, das fast genau die XSS ist Sie auf dem Laufenden, btw ;-)

Zum Beispiel können Sie mit einigen HTML versuchen wie diese:

test <img src="javascript:evil();" onload="evil();" /> 
test <img src="http://www.google.com/a.Png" /> test2 

Der Ausgang ist:

test test <img src="http://www.google.com/a.Png" alt="a.Png" /> test2 

Der img-Tag mit XSS gehalten hat nicht; der andere hat; und es wurde ein Attribut alt hinzugefügt, um standardkonform zu sein.

Es ist vielleicht nicht alle Probleme zu lösen, aber wenn Sie den Benutzern die Möglichkeit zur Eingabe von HTML geben, ist es auf jeden Fall sinnvoll (würde ich wage zu sagen: „Es ist ein must-have“?)

+0

Dank für u Antworten. Ich kenne HTML-Reiniger und andere "Desinfektionsmittel". Das wirkliche Problem ist: Wie kann ich tun, um nicht das HTML-Grundlayout (von Wmd) und das HTML vom Benutzer eingefügt in ..

+1

Grundlayout> wenn es nur einige einfache Tags ist, können Sie diese als "erlaubt" für HTMLPurifier definieren, also werden sie nicht entfernt. Wenn Sie zulassen möchten, dass HTML zwischen speziellen Tags eingefügt wird, sehen Sie sich diese Antwort an: http://stackoverflow.com/questions/1155443/process-a-block-of-html-ignoring-content-within-specific-tags/ 1155530 # 1155530; Indem Sie das und HTMLPurifier mischen, könnten Sie zu dem gelangen, was Sie wollen? –