C# Roslyn脚本是安全的,还是代码注入漏洞?

C# Roslyn脚本是安全的,还是代码注入漏洞?,c#,asp.net,asp.net-mvc,roslyn,C#,Asp.net,Asp.net Mvc,Roslyn,我们希望在c#/.net 4.6/aspx应用程序中添加脚本,以便在服务器端执行 到目前为止,我们找到的道路是 允许像这样的用户创建的脚本在我们的流程中运行安全吗?(其中有数据库连接字符串和其他正在处理的内容。) 我们可以限制脚本使用的CPU和内存资源吗 我们正在使用CodeDomProvider创建dll,然后将其导入appdomain。但是我们正在创建类、接口等等。你期望你的剧本有什么样的复杂性呢?不,这是不安全的,除非你努力做到这一点。但默认情况下不是这样。@Evk证实了我们的怀疑。那么

我们希望在c#/.net 4.6/aspx应用程序中添加脚本,以便在服务器端执行

到目前为止,我们找到的道路是

  • 允许像这样的用户创建的脚本在我们的流程中运行安全吗?(其中有数据库连接字符串和其他正在处理的内容。)

  • 我们可以限制脚本使用的CPU和内存资源吗


我们正在使用
CodeDomProvider
创建dll,然后将其导入appdomain。但是我们正在创建类、接口等等。你期望你的剧本有什么样的复杂性呢?不,这是不安全的,除非你努力做到这一点。但默认情况下不是这样。@Evk证实了我们的怀疑。那么,将用户创建的脚本添加到我们的应用程序中的安全选项是什么呢?大多数人使用具有受限权限的单独应用程序域(通常称为沙盒)来运行这样的代码:。但是,如果您阅读了此链接-大警告,则不建议对外部不受信任的代码(您的案例)执行此操作。真正正确的处理方法是在单独的虚拟环境中运行它,比如docker。如果这对于您的案例来说太复杂-至少按照描述在沙箱中运行,并小心地限制用户对此进程的权限。@Evk谢谢。Appdomains似乎不是初学者,因为它们不是真正的沙箱(它们仍在进程中,因此可以访问进程内存空间,Appdomains不能受到cpu或内存的限制)。因此,脱离过程似乎是唯一的办法。这意味着构建一个完整的应用程序克隆,减去一些东西,并通过网络传递大量大型对象。讨厌!