我有类似邮件合并的功能,它需要一个模板、一些业务对象,并生成 html,然后将其转换为 PDF。
我在用着剃刀引擎将模板+模型转换为 html 位。
如果我让用户指定模板,我要冒什么风险?是否可以降低任何风险?
例如,用户可以执行任意代码吗? (删除文件、更改数据库等?)有什么方法可以检测到这类事情吗? (我知道这通常是不可能的,但是 razor 模板中的代码位应该是模型属性获取,或者可能是基于模型属性值的 if 语句)。
我基本上信任这里的用户(这是一个小型私人项目),但随着模板引擎的发展,这个引擎对于这个应用程序来说似乎过于强大。
在版本 3 中我引入了一个IsolatedTemplateService
它支持在另一个中解析/编译模板AppDomain
。您将能够控制将在其中编译模板的应用程序域的创建,这意味着您可以通过将安全策略应用于子应用程序域本身来引入所需的任何安全要求。
在未来的推动中,我希望引入一种向管道添加扩展的通用方法,以便您可以执行代码生成检查等操作。我想这将启用在编译之前对生成的代码进行类型检查的方案。
几天前,我将 RazorEngine (v3) 的早期版本推到了 GitHub 上。请随意检查一下。https://github.com/Antaris/RazorEngine
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)