Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 允许用户在你的应用程序中编辑电子邮件Django模板是否安全?_Python_Django_Email_Templates - Fatal编程技术网

Python 允许用户在你的应用程序中编辑电子邮件Django模板是否安全?

Python 允许用户在你的应用程序中编辑电子邮件Django模板是否安全?,python,django,email,templates,Python,Django,Email,Templates,我正在Django中创建一个小型SaaS应用程序。它从不同组织的Web服务器收集数据。偶尔它会自动向客户(域所有者)发送通知邮件 我想让我们的用户(webhosters)在发送电子邮件之前,根据他们的喜好/需要更改电子邮件模板。电子邮件模板是普通的Django模板,包括许多可用变量。因此,我为电子邮件模板创建了一个模型。用户可以通过表单进行编辑。对于每个电子邮件模板,用户可以访问数量有限的模板变量 我是否需要了解任何安全问题/风险?还是建议采用这种方法 我的方法目前的目标是在服务器端呈现电子邮件

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

我想让我们的用户(webhosters)在发送电子邮件之前,根据他们的喜好/需要更改电子邮件模板。电子邮件模板是普通的Django模板,包括许多可用变量。因此,我为电子邮件模板创建了一个模型。用户可以通过表单进行编辑。对于每个电子邮件模板,用户可以访问数量有限的模板变量

我是否需要了解任何安全问题/风险?还是建议采用这种方法


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

关于这一点,我相信这里已经有很多答案了;但总结一下我的发现:这样做是“安全的”,但要注意向用户公开哪些变量/对象(即,包含在要呈现的模板的上下文中)


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

这一切都取决于将在其中计算模板的上下文,只需确保没有传递应被视为私有的变量即可

此外,如果在Django模板系统中发现安全缺陷,您的web应用程序将面临风险。您必须验证输入,但实际上无法验证,因为输入没有任何特定的结构


因此,如果可以的话,尝试从应用程序的其余部分对流程进行沙箱处理。或者简单地问问自己,这项功能是否真的有必要,如果你不能让用户通过使用清单或类似的东西来指定消息中包含的内容。在这一点上,验证输入变得很简单,您不必向用户公开完整的模板。

感谢您的快速回复。到目前为止,我还没有找到任何直接的答案,因此,我发布了这个问题。。。。对于代码段,上下文设置为一组变量。用户只能使用该集合编辑“template_name.txt”。关于注入有什么危险吗?当然,如果您使用我的代码示例,他们可以“注入”
user.objects.all
,并获取所有用户信息。因此,唯一的危险是您在上下文变量中提供的内容。只要你小心,就不会有任何真正的风险。我现在使用Pystache来呈现电子邮件模板。这样,用户就有了一种更简单的方式来“编程”他们的电子邮件。我可以转义文本,过滤任何标签。这对我来说太完美了。谢谢你的回答。我不知道你为什么要用Pystache。。。据我所见,这正是您使用django的渲染引擎所做的。