Python-Markdown包括逃避原始HTML的功能,显然是为了使其在不受信任的输入上安全,并且一般来说Markdown通常用于呈现用户输入,例如就在SO上。
但这种实施真的值得信赖吗?有没有人在这里研究它来决定在任意输入上运行是否安全?
我看到有例如Markdown in Django XSS safe和Secure Python Markdown Library但是'安全'模式真的安全吗?
据我所知,Python Markdown库似乎是安全的,if you use it properly。有关如何安全使用它的详细信息,请参阅链接,但简短版本是:使用最新版本,设置safe_mode
和设置enable_attributes=False
非常重要。
更新:safe_mode
现在应该被弃用,因为它存在安全问题。见https://github.com/Python-Markdown/markdown/commit/7db56daedf8a6006222f55eeeab748e7789fba89。而是使用单独的HTML清理程序,例如HTML Purifier。