安全的 Python Markdown 库 [关闭]
Posted
技术标签:
【中文标题】安全的 Python Markdown 库 [关闭]【英文标题】:Secure Python Markdown Library [closed] 【发布时间】:2011-01-22 10:17:32 【问题描述】:我想让用户离开富文本 cmets,可能使用 markdown。我已经安装了 Reddit 上使用的库,但我担心去年发生的 javascript 注入攻击,特别是因为我仍然不清楚攻击的细节。我还应该担心评论安全吗?是否有一个测试字符串可以让我通过我的系统来检查导致 reddit 失效的相同缺陷?
【问题讨论】:
【参考方案1】:其他答案提到了 Python-Markdown 的安全模式,但现在已弃用。引用 Python-Markdown 的作者的话:
“安全模式”是一个糟糕的名称选择,我们继续向后使用 可比性(旧代码仍然适用于我们的新版本)。真的是什么 is 是一种无标记模式。换句话说,这只是一种禁止原始 html 的方式 而且真的不能保证安全。
他们现在建议使用像 Bleach 这样的 HTML 清理程序来清理 Markdown 输出。 mdx_bleach 是一个 Python-Markdown 扩展,它就是这样做的。免责声明:我是这个扩展的作者。
因为它使用 html5lib 解析文档片段的方式与浏览器相同,所以 Bleach 对未知攻击具有极强的弹性,比基于正则表达式的清理程序更具弹性。
【讨论】:
【参考方案2】:Python-Markdown - 或多或少的“标准” - 具有转义 html 标签的“安全模式”功能。这应该足以应对大多数 HTML 注入攻击。
【讨论】:
【参考方案3】:reddit 现在使用discount markdown library。
【讨论】:
我在纯 python 环境(谷歌应用引擎)中工作,所以我认为我不能使用 C 库。我正在查看上面提到的 Scavenger 库,还查看了来自 reddit 的 filters.py 和 markdown.py 代码。 freewisdom 库打算放到另一个项目中,而显然您希望 reddit 代码在 reddit 中工作,所以我倾向于使用 freewisdom 代码。另一方面,我很好奇为什么您首先需要编写自己的过滤器代码——我应该注意公开可用的库中是否存在漏洞?以上是关于安全的 Python Markdown 库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
markdown Python Selenium - 打开新选项卡/焦点选项卡/关闭选项卡