【问题标题】:Is autoescape off in django safe?在 django 中自动转义是否安全?
【发布时间】:2009-09-11 20:33:09
【问题描述】:

我想在Django 1.0 模板中显示一些 HTML,为此我一直在做这样的事情:

{% autoescape off %}{{ var.text }}{% endautoescape %}

我只是想知道这有多安全?我是否仍然受到 SQL 注入和跨站点脚本以及其他类似漏洞的保护?

更新:

此文本将来自用户,那么在 Django 模板中安全显示 HTML 的最佳方式是什么?

【问题讨论】:

    标签: django templates


    【解决方案1】:

    自动转义可以防止跨站点脚本,而不是 sql 注入(您需要 make sure your inputs are scrubbed)。关闭自动转义意味着您相信“文本”中的内容,无论它来自何处,都不是恶意的(即,用户应该不可能创建或修改文本中的内容)。如果该假设成立,那么您可以安全地防止跨站点脚本,否则,这是一个安全漏洞。

    【讨论】:

    • 我在上面编辑了我的问题:“此文本将来自用户,那么在 django 模板中安全显示 html 的最佳方式是什么?”
    【解决方案2】:

    不,当您在模板引擎中将 HTML 标记为安全时,您有责任确保它可以安全呈现。

    此外,您可以通过更改来稍微简化(好吧,缩短)代码

    {% autoescape off %}
        {{ var.text }}
    {% endautoescape %}
    

    {{ var.text|safe }}   
    

    【讨论】:

      【解决方案3】:

      这是否安全完全取决于 var.text 的来源。如果它是完全由您控制的促销信息(例如),那么只要您不射中自己的脚,您就是安全的。如果 var.text 不知何故来自用户,那么你就有危险了。

      【讨论】:

        猜你喜欢
        • 2011-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 2016-11-03
        • 2019-08-16
        相关资源
        最近更新 更多