python标记扩展,用于清理不受信任的标记文档的输出。

mdx_bleach的Python项目详细描述


#mdx_bleach

**mdx_bleach**是一个[python标记](https://pythonhosted.org/markdown/)
扩展,它基于一个
白名单来清理不受信任的标记文档的输出。扩展是基于[漂白剂](http://bleach.readthedocs.org/en/latest/),
一个健壮的基于白名单的HTML消毒剂。

根据设计,所有HTML标记都允许在降价文档中使用。除非在代码块中写入
,否则原始html不会转义,因此由
web浏览器呈现。虽然这是一个不错的创作功能,但它也暴露了一些xss
漏洞。当标记文档的源
不可信时,这就成为一个问题。

**mdx_bleach**打算为python标记的
[不推荐的安全模式](https://pythonhosted.org/markdown/reference.html安全模式)提供更安全、更灵活的替代方案。

##安装md=markdown.markdown(extensions=[漂白剂])
>;>md.convert('<;SPAN>;不允许<;SPAN>;')
u'<;P>;<;SPAN>;不允许<;SPAN>;<;P>;'
``

,因为默认情况下不允许使用`<;SPAN>;``标记,**mdx_漂白剂**退出。
默认白名单可以在"mdx_漂白剂.白名单"中找到。



将以下关键字参数传递给``blazeextension``:

*``tags``tag whitelist
*``attributes``attributes whitelist
*``styles``styles whitelist
*``protocols`` protocols whitelist
*``strip``剥离标记
*``strip`comments``剥离注释

下面的示例反映了默认配置:

``python
from mdx_bleach.whitelist import allowed_tags,allowed_attributes,allowed_styles,allowed_protocols
bleach=bleadence(tags=allowed_tags,attributes=allowed_attributes,
styles=allowed_styles,protocols=allowed_protocols,strip=false,strip_comments=true)
md=markdown.markdown(extensions=[bleach])
`````



``tags``kwarg是允许的html标记的白名单。它应该是一个列表、
元组或其他iterable。任何其他HTML标记都将从文本中转义或剥离。这适用于markdown生成的html输出。

,因为markdown通常生成诸如"p"、"a"、"img"之类的html元素,等。
建议允许不少于
``mdx掼u bleach.whitelist.allowed掼u tags```中的默认标记白名单。

例如:

``python
>;来自mdx掼u bleach.whitelist import allowed掼tags
>;漂白剂=漂白剂延长剂(TAGS=ALLOWED掼TAGS+['small'])
>;>md=markdown.markdown(延长剂=[bleach])
>;>md.convert('<;small>;是允许的<;small>;')
u'<;p>;<;small>;是允许的<;small>;<;p>;'
``

这将允许编写的"小"标记和默认白名单中的任何标记。
请注意,如果安装了可以生成更具体标记的第三方扩展,您可能还需要白名单那些额外的标签。



它可以是一个列表,在
这种情况下,属性允许用于任何标记或字典,其中
键是标记名(或通配符:``*``用于所有标记),值
是允许的属性列表。

默认值是在``mdx_bleach.whitelist.allowed_attributes```中找到的保守字典。
如果重写``attributes``Kwarg并仍然需要若要支持图像和
链接,请确保在标签中允许使用"ref"和"title"属性,
以及``lt;img>;``标记中的``src``、``title``和``alt``属性。


}
bleach=bleaderextension(attributes=attrs)
````

在这种情况下,在任何允许的元素上都允许使用``class``属性(从
``tags``参数中),`````<;a>;``标记都允许有``ref`,``title``和
``rel`属性,等等。

如果callable返回true,则允许该属性。否则,它将被剥离。

例如:

`` python
def filter_src(name,value):
如果name in('alt','title','height',,"width"):
返回true
如果name=='src':
p=urlparse(value)
返回(不是p.netloc)或p.netloc=='mydomain.com'
返回false
`````


允许设置样式
作者,例如"颜色"和"背景色"。
默认值是空列表。

'FONT WEIGHT']
bleach=bleaderextension(tags=tags,attributes=attrs,styles=styles)
````

\protocol whitelist

默认列表只允许http、https和mailto。

例如,这将允许的协议设置为http、https和smb:

`` python
协议=['http','https','smb']
漂白剂=漂白剂扩展(协议=协议)
````

这将smb添加到漂白剂指定的一组允许的协议:

``python
bleach=bleaderextension(protocols=allowed_protocols+['smb'])
````

例如:

``python
>;>md=markdown.markdown(extensions=[bleartextension()])
>;>md.convert('<;SPAN>;不允许<;SPAN>;')
u'<;P>;<;SPAN>;不允许<;SPAN&;gt;'
````

此标记完全可以传递
``strip=true`:

``python
>;>;md=markdown.markdown(extensions=[bleartextension(strip=true))
>;>;md.convert('<;SPAN>;不允许<;SPAN>;')
u'<;p>;不允许<;/p>;'
```



若要禁用此行为,请设置
``strip\u comments=false`:

``python
>;>html='my<;!--评论-->;html'

>;>;md=markdown.markdown(extensions=[bleattextension()])
>;>;md.convert(html)
u'<;p>;my html<;p>;'

>;>;md=markdown.markdown(extensions=[bleattextension(strip\u comments=false])
>;>;md.convert(HTML)
u'<;p>;我的<;!--已评论-->;HTML<;/P>;'
```



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
HTTP标头的java InputStream未终止   java测试SpringWebListener   具有定义的替换编号Java的regex ReplaceAll   在java中使用contains()方法   java在选择查询中使用JoinColumn字段   具有用户的java Start-stop demon不是以给定用户启动   java glBufferData生成GL\u无效\u操作   java中循环代码的循环   Java位无符号移位(>>>>)会产生奇怪的结果   java HQL使用点分隔符从select获取结果   条纹、弹簧、玩耍(或?):使用哪种高性能Java框架?   广播接收机中的java停止服务   java回收器视图占据整个屏幕。不在上面显示我的UI元素   java使MySQL查询更快   java MappedByteBuffer查询   java递归算法问题