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?
Odpowiedz
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.
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
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. –
Możesz łatwo kodować XSS-defence w Pythonie, patrz na przykład http://code.activestate.com/recipes/496942/, aby uzyskać pouczający i użyteczny fragment kodu.
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'))
Zaczynając od Pythona 3.4+, istnieje 'html.escape' w stdlib! –
No nic, że usuwa tagi html zrobi. Czy masz specjalne wymagania dotyczące rzeczy, które chcesz zachować? – SpliFF
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