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