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



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

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

问题:

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

{{ richtext | safe }}

如果没有,如何确保安全?

如果html来自可靠的来源,比如您自己,那么它(很可能(是安全的。但是,如果你允许网站的用户提交他们自己的html标记,那么这是不安全的。

但有时需要在django的模板中显示html标记,并且别无选择,只能使用safe过滤器。在这些情况下,解决方案是"净化"html代码。

"Sanitizing"意味着您只保留数据中安全的html标签,并删除所有不安全或不需要的标签(如scriptstyle标签(。


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

下面是一个例子(取自文档(:

import bleach
bleach.clean('an <script>evil()</script> example')
# Output -> u'an &lt;script&gt;evil()&lt;/script&gt; example'

这个库还有django应用程序:django-bleach

相关内容

  • 没有找到相关文章