Django XSS中的Markdown安全

发布于 2021-01-29 16:47:24

我在应用程序中使用Markdown来显示用户传记。我希望用户能够略微格式化传记,所以让他们使用TinyMCE编辑器。

然后,将其显示在Django模板中,如下所示

{% load markup %}

<div id="biography">
    {{ biography|markdown }}
</div>

问题是,如果传记中有标签,它就不会像django在其他地方所做的那样被转义。这是传记测试的源输出:

<p><strong>asdfsdafsadf</strong></p> 
<p><strong>sd<em>fdfdsfsd</em></strong><em>sdfsdfsdfdsf</em>sdfsdfsdf</p> 
<p><strong>sdafasdfasdf</strong></p>

<script>document.location='http://test.com'</script>

如何设置Markdown以逃避这些恶意脚本?

关注者
0
被浏览
163
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    根据django.contrib.markup.templatetags.markup.markdown的文档字符串:

    要启用安全模式,该模式将剥离原始HTML并仅返回由实际Markdown语法生成的HTML,请将“安全”作为列表中的第一个扩展名传递。

    这应该工作:

    {{ biography|markdown:"safe" }}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看