django安全的自动关闭?

时间:2009-09-11 20:33:10

标签: django templates

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

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

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

===编辑=======

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

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

不,当您在模板引擎中将HTML标记为安全时,您将负责确保渲染是安全的。

此外,您可以通过更改

来简化(缩短)您的代码
{% autoescape off %}
    {{ var.text }}
{% endautoescape %}

{{ var.text|safe }}   

答案 2 :(得分:1)

这是否安全完全取决于var.text的来源。如果它是一个完全由你控制的促销信息(例如),那么只要你不用脚射击自己,你就是安全的。如果var.text以某种方式来自用户,那么你就处于危险之中。