用户定义的模板Django

时间:2019-10-03 16:35:34

标签: python django

有没有一种方法可以使应用程序用户在Django应用程序中创建自己的模板?一个示例就是MailChimp如何使用户创建自己的自定义电子邮件模板。

当前,我正在考虑创建一个捕获用户想要显示的信息的模型。该模型可以指向模板,并使用用户想要显示的信息填充模板。但是有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

docs中所述:

  

警告

     

模板系统对不受信任的模板作者是不安全的。例如,网站不应允许其用户提供自己的模板,因为模板作者可以执行诸如XSS攻击和访问可能包含敏感信息的模板变量属性之类的事情。

即使模板存储在模型中,也要让用户定义模板,这可能会导致xss漏洞,并且很难安全地实现。

答案 1 :(得分:1)

另一个回答指出来自the docs的警告包括:

  

可能包含敏感信息的模板变量的访问属性

这是一个问题。所有Django表通常以“魔术”方式链接在一起。模板系统自身不涉及授予已验证用户的权限。如果可以处理模板,则它将处理所有可能的内容-即,如果表之间存在链接,它将跟随它。这意味着,诸如与客户记录链接的客户记录,与供应商记录链接到项目记录的用户记录之类的东西,可以允许任何用户(或至少任何具有创建模板权限的用户)查看几乎所有数据。在系统中。至少使用标准的User软件包,他们将看不到用户密码。但是他们几乎可以做到任何其他事情。例如,他们也许可以找出谁在使用该系统,该用户付了多少钱,管理员的姓名(对于网络钓鱼非常有用!)等等。

因此,尽管创建用户定义的Django模板系统相对容易,但不是一个好主意,至少在任何可公开访问的系统上都不是。

相关问题