python-markdown在不可信输入下安全吗?

10 投票
2 回答
1879 浏览
提问于 2025-04-17 07:51

Python-Markdown 这个工具有一些功能,比如可以处理原始的HTML代码,目的是为了让它在处理不可信的输入时更加安全。一般来说,Markdown常常用来显示用户输入的内容,比如在Stack Overflow上就是这样。

但是,这个实现真的可靠吗?有没有人仔细研究过,确认它在处理任意输入时是安全的?

我看到有一些讨论,比如 Django中的Markdown是否安全安全的Python Markdown库,但是它的“安全”模式真的安全吗?

2 个回答

0

你可以使用 bleach 这个工具。

import bleach

text = "<a href='https://example.com'>Example</a><script>alert('message');</script>"

sanitized_text = bleach.clean(text,
            tags=['p','a','code','pre','blockquote'],
            attributes={'code': ['class'],'a': ['href']}
)

想了解更多信息,可以查看 文档

5

Python的Markdown库在大家看来是安全的,只要你用得当。具体怎么安全使用,可以查看这个链接,但简单来说:一定要使用最新版本,设置safe_mode,并且把enable_attributes=False

更新一下:safe_mode将要被淘汰,因为它存在安全问题。具体可以看这个链接:https://github.com/Python-Markdown/markdown/commit/7db56daedf8a6006222f55eeeab748e7789fba89。现在建议使用一个单独的HTML清理工具,比如HTML Purifier。

撰写回答