Hallo,
nach vielen Jahren in dem ich Python hauptsächlich im wissenschaftlichen Bereich eingesetzt habe, will ich mich nun auch mit mit der Erstellung von Webapplikationen unter Python auseinandersetzen. Ich habe mir dazu Django als Framework auserkoren. Der Einstieg war nicht leicht, aber mittlerweile bin ich mit meinen Ergebnissen recht zufrieden und bin beeindruckt was man in kurzer Zeit alles so erstellen kann.
Ich komme nun jedoch an einer Stelle nicht weiter. Ich möchte auf der Client-Seite Rich-Text-Edits wie bspw. TinyMCE verwenden, um dem Benutzer auf einfache Art und Weise zu erlauben, formatierten Text zu erstellen, der dann später auf der Seite angezeigt werden soll. Die Ausgabe dieser Editoren erfolgt meist in HTML. Wie kann ich nun auf der Server-Seite verhindern, dass Schad-Code in dieses HTML einschmuggelt (z.B. mit Javascript-Elementen) wurde? Da gibt es doch mit Sicherheit schon etwas fertiges... Ich konnte leider nichts passendes finden.
MFG HerrHagen
Schadhaften Code von Rich-Text-Edit verhindern
Schön und gut. Das würde sicherlich funktionieren. Aber: Es gibt ja bspw. mehrere Arten wie man Javascript in HTML einbinden könnte (<script>, <link>). Wenn man noch browserspezifische Lösungen dazu nimmt, gibt sicherlich noch einige mehr, auf die man ohne umfangreiches Hintergrundwissen nie gekommen wäre. Sicherlich könnte man mit Whitelisten arbeiten und nur bestimmte Tags erlauben. Allerdings sehe ich die Gefahr, dass es doch wieder irgendwelche Tricks gibt (für bestimmte Browser, außerhalb jeder Norm) da etwas einzuschleusen, auf die ich als Einsteiger in diesem Bereich nie gekommen wäre.
Deswegen noch einmal die Frage: Gibt es da nicht schon was Schlüsselfertiges, wo jemand mit viel Geduld und Hintergrundwissen alle Eventualitäten bedacht hat?
Deswegen noch einmal die Frage: Gibt es da nicht schon was Schlüsselfertiges, wo jemand mit viel Geduld und Hintergrundwissen alle Eventualitäten bedacht hat?
Genshi hat da etwas eingebautes: http://genshi.edgewall.org/wiki/Documen ... -sanitizer
Hier noch ein Spickzettel zum Testen: http://ha.ckers.org/xss.html
Hier noch ein Spickzettel zum Testen: http://ha.ckers.org/xss.html
Wenn das ein Backend ist, dann würde ich das garnicht prüfen, denn vllt. ist der "Schadcode" (oder auch normaler js Code) ja gewollt.
the more they change the more they stay the same
@Dav1d: HTML-Eingaben nicht vertrauenswürdiger Clients müssen immer geprüft werden, ohne jede Ausnahme.
Ich gehe davon aus, dass das ein Backend für einen "geprüften" user bzw. admin ist und der user will vllt. dass bestimmter JS-Code ausgeführt wird
the more they change the more they stay the same
@Dav1d: Lies vielleicht doch nochmal die Fragestellung:
Ich möchte auf der Client-Seite Rich-Text-Edits wie bspw. TinyMCE verwenden, um dem Benutzer auf einfache Art und Weise zu erlauben, formatierten Text zu erstellen, der dann später auf der Seite angezeigt werden soll. Die Ausgabe dieser Editoren erfolgt meist in HTML. Wie kann ich nun auf der Server-Seite verhindern, dass Schad-Code in dieses HTML einschmuggelt (z.B. mit Javascript-Elementen) wurde?
Ich kann da nirgends erkennen ob der Benutzer ein admin o.ä. ist oder ein "surfer"snafu hat geschrieben:@Dav1d: Lies vielleicht doch nochmal die Fragestellung:Ich möchte auf der Client-Seite Rich-Text-Edits wie bspw. TinyMCE verwenden, um dem Benutzer auf einfache Art und Weise zu erlauben, formatierten Text zu erstellen, der dann später auf der Seite angezeigt werden soll. Die Ausgabe dieser Editoren erfolgt meist in HTML. Wie kann ich nun auf der Server-Seite verhindern, dass Schad-Code in dieses HTML einschmuggelt (z.B. mit Javascript-Elementen) wurde?
the more they change the more they stay the same
@Dav1d: Mein Gott, was hat das denn damit zu tun, welche Privilegien ein Nutzer besitzt?! ist es tatsächlich so schwer zu begreifen, dass Deine Antwort, gar nicht zu prüfen, einfach überhaupt nicht zur Frage, wie man das Einschleusen von Schadcode verhindern kann, passt? Im Übrigen ist der OP ganz offensichtlich zufrieden mit den Antworten, wozu also jetzt noch die Metadiskussion über die Fragestellung?
Is ja gut
Ich wollte nur erwähnen, dass es mich nerven würde (und andere bestimmt auch), wenn ich admin bin und keinen z.B. JS-Code einbetten darf.

Ich wollte nur erwähnen, dass es mich nerven würde (und andere bestimmt auch), wenn ich admin bin und keinen z.B. JS-Code einbetten darf.
the more they change the more they stay the same
@Dav1d: Als Admin aber würde es Dich bestimmt noch wesentlich mehr nerven, wenn jeder beliebige Benutzer einfach so JS-Code einbetten könnte 

Ja, klar, man kann nicht jedem Nutzer erlauben JS einzubauen (z.B. in nem Kommentar) aber als Admin würde es mich verdammt nerven, wenn ich keinen JS-Code einbauen darf und erst den Quelltext ändern muss.
the more they change the more they stay the same
"Fallentscheidung nach Nutzerrechten" klingt allerdings etwas anders als "bei einem Backend würde ich gar nicht prüfen". 
Ich wundere mich übrigens ebenfalls, wieso du so auf dem Thema herumreitest. Lunar sprach von "nicht vertrauenswürdigen Clients".

Ich wundere mich übrigens ebenfalls, wieso du so auf dem Thema herumreitest. Lunar sprach von "nicht vertrauenswürdigen Clients".