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第三方库


热门话题
java找不到当前线程的会话   同步Java同步方法调用非同步方法   这段代码的java时间复杂度是如何列出一个集合的所有子集的?   java Jetty SslConnectionFactory nextProtocol   为什么在java集合中使用游标而不是for循环   java如何对长函数进行单元测试?   如何从java中的文本输入创建数组   java工具栏内容未显示,尽管出现了片段内容   java MediaPlayer无法处理本地文件   java在多次读取时,从TCP服务器读取的数据将挂起   java组织。springframework。数据领域无法将PageImpl强制转换为   java如何使用@WithMockUser并从属性文件中传递用户名和密码?   JavaSpringBootGradle插件2。x如何使用自定义启动器布局工厂   sockets Java客户端和服务器之间使用字符串等进行通信的“行业标准”方法是什么   java变量引用不存在的资源:${project\u loc:project\u name}   搜索如何返回LDAP Java中所有用户的特定属性?   JDK1.8.016x的java密钥斗篷代理问题   spring如何使用Java中的Exchange获取邮件   java Kotlin+Dagger 2:Dagger*文件不会生成   如何在传入的double上执行操作,然后在Java中返回