Django是否有类似Rails的安全用户可编辑模板语言?

2 投票
2 回答
1386 浏览
提问于 2025-04-16 11:36

Django有没有一种用户可以编辑的模板语言,像Rails的Liquid那样安全?

也就是说,普通用户不能通过修改模板代码来输出一些危险的内容,从而攻击网站。

2 个回答

1

Liquid 是从 Django 的模板语言发展而来的,所以答案是肯定的。你可以渲染用户提交的模板,并按照自己的方式处理它们。不过,安全性是开发者需要关注的问题。如果你想让用户输入的内容直接影响你的程序,而不进行清理和验证,模板工具是无法保护你的。

这里有一些不错的阅读材料:

http://www.djangobook.com/en/2.0/chapter04/

http://www.djangobook.com/en/2.0/chapter09/

http://loopj.com/2009/05/23/a-django-developers-views-on-rails/

2

如果你正确使用模板语言:是的。

看看Django的模板标签和过滤器:

举个例子:

{{ evil_userinput }}

这段代码会直接打印出用户输入的内容。

{{ evil_userinput|escape }}

这段代码会对所有的HTML实体进行转义,这样就无法在你的HTML页面中插入危险的代码了。

撰写回答