问题 用于XSS过滤的Python库? [关闭]


是否有一个良好的,积极维护的python库可用于过滤恶意输入,如XSS?


1480
2018-05-23 11:29


起源

那么删除html标签的任何东西都会这样做。您对要保留的东西有特殊要求吗? - SpliFF
我只想指出上面的评论非常幼稚,如果你读到这一点,请考虑阅读: owasp.org/index.php/... 作为一个开始。 - mkoistinen


答案:


如果您使用的是Web框架和像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'))

8
2018-06-15 16:12



从Python 3.4+开始,有 html.escape 在stdlib! - Maximilian Hils


您可以在Python中轻松编写XSS防御代码,例如 http://code.activestate.com/recipes/496942/ 一段有用的,有用的代码。


3
2018-05-23 16:00





带邻克 图书馆看起来很不错。我没有正确检查它,但看起来它做得很好(即可以将你指定的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's 80 characters wide.
  mylumpoftext = html2text(mylumpofcoolcleancollectedhtml,ignore_tags=("img",),indent_width=4,page_width=80)

希望有所帮助。


1
2018-05-23 12:10



你不能只相信攻击者会使用漂亮的标签。除非strip-o-gram适用于重度编码的标签(参见rsnake的列表: ha.ckers.org/xss.html)这不行。 - Mystic
同样神秘主义者说的。看起来像Strip-o-gram(男孩听起来像你可能为了让一个孤独的朋友振作起来的东西)并没有被描述为对抗XSS的防御。 - Alan H.