我正在构建一个django Web应用程序,用户可以在其中通过tinymce编辑器提交文本。
对于该任务,我使用django-tinymce
扩展名。
问题:
像这样使用safe
过滤器在模板中呈现HTML是否安全? :
{{ richtext | safe }}
如果没有,如何使其安全?
如果html来自诸如您这样的可靠来源,那么它(很可能)是安全的。但是,如果您允许站点的用户提交自己的html标记,那么这是不安全的。
但是有时必须在Django的模板中显示html标记,并且别无选择,只能使用safe
过滤器。在这些情况下,解决方案是“清理” html代码。
“清除”表示您仅在数据中保留安全的html标签,并删除所有不安全或不需要的标签(例如script
或style
标签)。
为了清除数据,您可以使用bleach
库。
这是一个示例(摘自文档):
bleach
[该库还有django应用:import bleach
bleach.clean('an <script>evil()</script> example')
# Output -> u'an <script>evil()</script> example'
。