安全的Python Markdown库
我想让用户能够留下丰富的文本评论,可能会用到markdown这种格式。我已经安装了Reddit上使用的库,但我对去年发生的JavaScript注入攻击感到担忧,尤其是我对这个攻击是怎么发生的细节还不太清楚。我还需要担心评论的安全性吗?有没有什么测试字符串可以让我检查一下我的系统是否存在导致Reddit崩溃的同样漏洞?
3 个回答
2
其他回答提到了Python-Markdown的安全模式,但这个功能现在已经不再推荐使用了。Python-Markdown的作者曾表示:
“安全模式”这个名字其实不太好,但我们为了兼容旧代码还是继续使用。实际上,它只是一个不允许使用标记的模式。换句话说,它只是禁止使用原始的HTML,并不能真正保证安全。
他们现在建议使用像Bleach这样的HTML清理工具来处理Markdown输出。mdx_bleach是一个Python-Markdown的扩展,正是用来做这个的。免责声明:我是这个扩展的作者。
因为它使用html5lib来解析文档片段,和浏览器的处理方式一样,所以Bleach对未知攻击非常有抵抗力,远比普通的正则表达式清理工具要强。
4
reddit现在使用的是一个叫做discount markdown库的工具。
4
Python-Markdown - 这个库算是比较标准的了 - 它有一个“安全模式”的功能,可以把HTML标签转义。这样做基本上可以防止大部分的HTML注入攻击。