Библиотека Python для фильтрации XSS?

Есть ли хорошая, активно поддерживаемая библиотека python для фильтрации вредоносных данных, таких как XSS?

Ответ 1

Если вы используете веб-фреймворк и движок шаблонов, такие как Jinja2, есть вероятность, что для механизма шаблона или рамки есть что-то построенное только для этого.

В модуле cgi есть что-то, что может вам помочь:

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

Также Jinja2 обеспечивает экранирование:

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

Ответ 2

Вы можете легко закодировать XSS-защиту в Python, см., например, http://code.activestate.com/recipes/496942/ для поучительной и полезной части кода.

Ответ 3

Библиотека Strip-o-Gram выглядит неплохо. Я не проверял его правильно, но похоже, что он хорошо справляется (т.е. Может указывать белые теги HTML, которые вы указываете, а также HTML-экранирование чего-либо противного).

Вот пример фрагмента использования, приведенный на этой странице:

  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 80 characters wide.
  mylumpoftext = html2text(mylumpofcoolcleancollectedhtml,ignore_tags=("img",),indent_width=4,page_width=80)

Надеюсь, что это поможет.