【问题标题】:Django - safely render HTML in templateDjango - 在模板中安全地呈现 HTML
【发布时间】:2020-03-18 15:24:41
【问题描述】:

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

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

问题:

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

{{ richtext | safe }}

如果不是,如何保证安全?

【问题讨论】:

    标签: django security django-templates tinymce code-injection


    【解决方案1】:

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

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

    “清理”意味着您只保留数据中的安全 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 2020-06-15
      相关资源
      最近更新 更多