2009-05-23 20 views
10

Czy istnieje dobra, aktywnie utrzymywana biblioteka Pythona dostępna do filtrowania złośliwych danych wejściowych, takich jak XSS?Biblioteka Pythona do filtrowania XSS?

+0

No nic, że usuwa tagi html zrobi. Czy masz specjalne wymagania dotyczące rzeczy, które chcesz zachować? – SpliFF

+0

Chciałbym zaznaczyć, że powyższy komentarz jest bardzo naiwny, jeśli to czytasz, rozważ także przeczytanie: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet jako początek. – mkoistinen

Odpowiedz

0

Biblioteka Strip-o-Gram wygląda całkiem nieźle. Nie sprawdziłem go poprawnie, ale wygląda na to, że robi to dobrze (tzn. Może wstawiać znaczniki HTML na białej liście, a także wymazywać wszystko co nieprzyjemne).

Oto urywek przykład użycia, cytat z tej strony:

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) 

nadzieję, że pomoże.

+2

Nie można po prostu uwierzyć, że atakujący umieścili ładne tagi. O ile strip-o-gram nie działa na mocno zakodowanych znacznikach (patrz lista rsnake: http://ha.ckers.org/xss.html), to nie zadziała. – Mystic

+0

Tak samo, jak powiedział Mystic. Wydaje się, że Strip-o-gram (chłopiec brzmi jak coś, co możesz rozweselić samotnego przyjaciela) nie jest opisany jako obrona przed XSS. –

8

Jeśli używasz platformy internetowej i silnika szablonów, takiego jak Jinja2, istnieje szansa, że ​​silnik szablonów lub framework ma coś wbudowanego.

Jest coś w module cgi, które mogą pomóc:

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

także Jinja2 zapewnia ucieczki:

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

Zaczynając od Pythona 3.4+, istnieje 'html.escape' w stdlib! –

Powiązane problemy