【发布时间】:2014-05-28 09:09:57
【问题描述】:
这是对THIS 问题的更新,因为 V3 现已推出一段时间:
我也在考虑将RazorEngine 用于邮件模板(甚至更多)。
现在是否有“足够的安全模式”可供用户定义模板?
使用IsolatedTemplateService,我可以避免用户访问我的域对象,但是在旧问题中也讨论过的其他内容(例如编辑/删除文件)呢?
还有什么关于“手动”访问数据库(如果文件访问是可能的,或者在最坏的情况下是简单的暴力破解,则通过从配置文件中读取连接字符串)和例如将用户添加为管理员?
有没有办法为IsolatedTemplateService/为IsolatedTemplateService创建的自定义AppDomain“禁用”所有这些东西?
【问题讨论】:
-
正如对该问题的公认答案所说:“一个 cshtml Razor 文件能够在站点上下文中执行任何 .NET 代码,所以是的,允许提供它们存在安全风险由用户。”您的服务器上的代码注入攻击等待发生。
-
@KrisVandermotten:是的,但是使用自定义
AppDomain,您应该能够将访问限制为仅“执行代码”,而不是“文件系统访问”或“网络访问”。我目前正在尝试不同的东西,但RazorEngine似乎没有在PermissionState.UnrestrictedAppDomain中运行... -
在过去,您可以创建一个具有非常有限的代码访问安全权限的 AppDomain。其中很多已经被简化,并且现在不那么强大了。但即便如此,如果有人写
while (true) ;怎么办?我称之为拒绝服务攻击。我想这真的可以归结为:这些“用户”是谁,你信任他们吗?
标签: c# security razor razorengine