Django的最终用户编辑视图的模板标记是否像rails liquid templating一样安全?

时间:2010-11-18 21:24:42

标签: python django

我希望最终用户能够在线编辑他们的视图模板,因此必须安全或“监禁”,以便只有我明确推送到视图页面的对象才可以访问。

即。我不希望最终用户能够编写python代码,或者找出我的连接字符串信息等等。

对于这种用法,django的视图模板标记是否安全?

2 个答案:

答案 0 :(得分:1)

据我所知,Django模板对于这种代码是安全的。

除了可以在模板中执行的简单循环/分支之外,唯一的逻辑是注册为模板标记或过滤器的任何逻辑。 TT或过滤器只能通过后端代码注册。

在这里,您可以看到模板标签和过滤器的列表:http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs大多数只是处理字符串或日期等。

干杯

编辑:您肯定希望确保模板上下文中没有设置对象。

答案 1 :(得分:1)

Django模板大部分都是安全的,但这取决于您向模板上下文公开的内容。

最大的问题是将对象暴露给模板,因为传递了所有方法。对于QuerySets尤其如此,QuerySets是传递给模板且最易受攻击的最常见对象。

如果您将文章从视图传递到模板

articles = Articles.objects.all()

我可以做以下

{% for article in articles %}
    {{ article.delete }}
{% endfor %}