Django-安全地在模板中呈现HTML

问题描述 投票:0回答:1

我正在构建一个django Web应用程序,用户可以在其中通过tinymce编辑器提交文本。

对于该任务,我使用django-tinymce扩展名。

问题:

像这样使用safe过滤器在模板中呈现HTML是否安全? :

{{ richtext | safe }}

如果没有,如何使其安全?

django security django-templates tinymce code-injection
1个回答
1
投票

如果html来自诸如您这样的可靠来源,那么它(很可能)是安全的。但是,如果您允许站点的用户提交自己的html标记,那么这是不安全的。

但是有时必须在Django的模板中显示html标记,并且别无选择,只能使用safe过滤器。在这些情况下,解决方案是“清理” html代码。

“清除”表示您仅在数据中保留安全的html标签,并删除所有不安全或不需要的标签(例如scriptstyle标签)。


为了清除数据,您可以使用bleach库。

这是一个示例(摘自文档):

bleach

[该库还有django应用:import bleach bleach.clean('an <script>evil()</script> example') # Output -> u'an &lt;script&gt;evil()&lt;/script&gt; example'

© www.soinside.com 2019 - 2024. All rights reserved.