漂白剂是一个HTML消毒剂,而不是降价消毒剂。如果您想净化来自您网站上不受信任的用户的输入,这是可以理解的。但是,您通常会在markdown(这是HTML)的输出上运行漂白,而不是在降价文本本身上。
sanitized_html = bleach.clean(markdown.markdown(some_text))
继续并将您的示例降价文本传递给Python-Markdown。你会得到完全可以接受的结果。事实上,你的输出(首先使用漂白剂)实际上是不正确的。请注意,代码现在包含<
,它将在您的浏览器中显示为<
而不是<
。你真正想要的输出是:
<p>< <code>a < b</code></p>
而这正是Python-Markdown给你的开箱即用。 Python-Markdown的dingus显示给定输入的HTML源代码和预览。你可能想用它来看看我的意思。
如果您担心用户提交坏Markdown会破坏事情,您可能会很高兴知道Python-Markdown所述的goals之一适合“在Web服务器环境中使用(绝不会引发异常,从不写入标准输出等)“换句话说,坏的用户输入不应该使服务器崩溃。当然,他们可以注入恶意的html/javascript,但这是Markdown在用户输入中构建html后的作用。
最后一个评论。是的,我知道Python-Markdown有一个“safe_mode”。但是,这是一个不幸的命名功能。更合适的名称可能是“strip_html”或“escape_html”(它也可以)。作为Python-Markdown的主要开发人员,我推荐使用Bleach来清理不受信任的用户的输入。
你期待什么样的输出?这看起来非常像我期望的。 –