用python做web开发时,必须要考虑到防止用户的XSS注入。
Bleach是一个基于白名单、通过转义或去除标签和属性的方式,来对HTML文本净化的python库。
除此之外,bleach还能安全地链接文本,它所提供的过滤器,可以过滤掉django的urlize过滤器所不能过滤的内容,并且可以随意的设置rel属性,即使是已经存在于文本中的链接。
bleach 设计的目的在于对不可信来源数据的净化。如果你发现自己总是依赖你的网站管理员做很多事情,那你可能不适合使用它的场景里。要么相信要用户,要么就不去相信。
由于bleach依赖html5lib,因此它在现代浏览器上处理一些奇怪的HTML标签依然好用。它的任何方法都能帮助修复错乱的或嵌套的标签。
安装bleach
pip install bleach |
常用的方法如下:
文本内容过滤
bleach.clean() |
文本内容链接化
bleach.linkify() |
简单应用示例代码:
输出结果如下:
#文本内容过滤
result = bleach.clean("<span style='color:red;'>bleach TEST</span>")
print(result)
#构建链接
result = bleach.linkify("an http://www.baidu.com baidu")
print(result)
#添加标签白名单b
result = bleach.clean("<b><i>an example</i></b>",tags="b")
print(result)
#过滤标签保留属性
result = bleach.clean("<p class='foo' style='color:red;font-weight:bold;'>blah blah blah</p>",
tags="p",
attributes="style",
styles="font-weight")
print(result)
|
输出结果如下:

本文只是简单介绍了bleach库的基本方法的使用。大家需要更详细的学习请参考官网。https://pypi.python.org/pypi/bleach