让用户编辑电子邮件中的电子邮件Django模板是否安全(不)安全?

时间:2015-02-23 14:12:56

标签: python django email templates

我正在Django中创建一个小型SaaS应用程序。它从不同组织的Web服务器收集数据。偶尔,它会自动向其客户(域所有者)发送通知邮件。

我想让我们的用户(网站主持人)在发送之前将电子邮件模板更改为他们的喜好/需求。电子邮件模板是纯Django模板,包括许多可用变量。所以,我为电子邮件模板创建了一个模型。用户可以通过表单进行编辑。每个电子邮件模板可以访问有限数量的模板变量。

我需要注意哪些安全问题/风险?或者推荐这种方法。

我的方法目前针对电子邮件的服务器端呈现。我还检查了一些客户端渲染的解决方案,比如Dust.js,但我还不相信它会对我有所帮助。

2 个答案:

答案 0 :(得分:0)

我相信这里已有很多答案;但总结一下我发现的东西:这样做是“安全的”,但要注意你向用户公开的变量/对象(即包含在要渲染的模板的上下文中)。

render_to_string('template_name.txt', {'user': Users})会非常糟糕:)

答案 1 :(得分:-1)

这一切都取决于评估模板的上下文,只需确保没有传递应被视为私有的变量。

此外,如果在Django模板系统中发现安全漏洞,您的Web应用程序将面临风险。你必须验证输入,但你不能真正这样做,因为输入没有任何特定的结构。

如果可以,请尝试从应用程序的其余部分沙箱化该过程。或者只是问自己这个功能是否真的有必要,如果你不能让用户通过使用清单或类似的东西来指定要包含在邮件中的内容。此时,验证输入变得微不足道,您不必将完整模板公开给用户。