2009-05-23 14 views
10

Gibt es eine gute, aktiv gepflegte Python-Bibliothek zum Filtern bösartiger Eingaben wie XSS?Python-Bibliothek für XSS-Filterung?

+0

Nun alles, was das tun HTML-Tags entfernt. Hatten Sie besondere Anforderungen an Dinge, die Sie behalten möchten? – SpliFF

+0

Ich möchte nur darauf hinweisen, dass der obige Kommentar sehr naiv ist, wenn Sie das lesen, lesen Sie auch: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet als Start. – mkoistinen

Antwort

0

Die Strip-o-Gram Bibliothek sieht ganz nett aus. Ich habe es nicht richtig ausgecheckt, aber es sieht so aus, als ob es die Dinge gut macht (d. H. HTML-Tags, die Sie angeben, auf die weiße Liste setzen kann, sowie HTML, das etwas Unerfreuliches entlässt).

Hier ist das Beispiel für die Verwendung Schnipsel, von dieser Seite zitiert:

from stripogram import html2text, html2safehtml 
    mylumpofdodgyhtml # a lump of dodgy html ;-) 
    # Only allow <b>, <a>, <i>, <br>, and <p> tags 
    mylumpofcoolcleancollectedhtml = html2safehtml(mylumpofdodgyhtml,valid_tags=("b", "a", "i", "br", "p")) 
    # Don't process <img> tags, just strip them out. Use an indent of 4 spaces 
    # and a page that's 80 characters wide. 
    mylumpoftext = html2text(mylumpofcoolcleancollectedhtml,ignore_tags=("img",),indent_width=4,page_width=80) 

Hoffnung, das hilft.

+2

Sie können nicht einfach darauf vertrauen, dass Angreifer schöne Tags setzen. Wenn strip-o-gram nicht an stark codierten Tags arbeitet (siehe rsnakes Liste: http://ha.ckers.org/xss.html), wird dies nicht funktionieren. – Mystic

+0

Dito, was Mystic gesagt hat. Scheint wie Strip-o-gram (Junge klingt das, als ob du einen einsamen Freund aufheitern würdest) wird nicht als Verteidigung gegen XSS beschrieben. –

8

Wenn Sie ein Web-Framework und eine Template-Engine wie Jinja2 verwenden, besteht die Möglichkeit, dass die Template-Engine oder das Framework dafür etwas eingebaut hat.

Es gibt etwas in das cgi-Modul, das Ihnen helfen kann:

cgi.escape('malicious code here') finden Sie unter: http://docs.python.org/library/cgi.html#cgi.escape

Auch Jinja2 bietet Flucht:

from jinja2 import utils 
str(utils.escape('malicious code here')) 
+0

Ab Python 3.4+ gibt es 'html.escape' in stdlib! –

Verwandte Themen