是否可以限制或限制可以从DLL执行的C#代码的范围?
我正在研究一个项目,我将允许用户编写一些代码,这些代码将被编译,加载并运行,此代码将允许用户控制应用程序的某些部分。但是,只要允许他们将C#插入到正在运行的应用程序中,就有一些我最好喜欢的限制。是否可以限制或限制可以从DLL执行的C#代码的范围?
是否有任何方法可以运行一段代码,但可以说阻止任何System.Threading
使用或任何System.IO
使用?
我知道通过代码并删除任何引用将是可能的,但我相信会有解决方法。在写这篇文章之前,我至少要检查一下没有更简单,更有效的方法。
我已使用Google搜索,但无论是我看错了地方或问错的问题。不过,我知道你堆栈溢出的人是天才。有任何想法吗?
谢谢,任何答案将不胜感激!
Code Access Security可能是你在找什么。
我想这可能是!谢谢 – 2012-01-15 19:44:38
AFAICT不能限制使用代码访问安全性的新线程的创建,以避免像加载项创建的线程中的未处理的异常,即使在新的AppDomain中“隔离”时也是如此。 – 2014-01-08 22:13:39
而不是通过代码并删除所有单独的引用,为什么不只是限制项目引用?另外,通过使用.NET框架配置管理单元,您可以基于各种选项管理对GAC,域应用等的访问,从而充分利用系统上的.NET权限。 (开始>运行> mscorcfg.msc启动它)我不知道什么新的4.0选项将取代该配置实用程序,但是。编辑:进一步你可以,例如运行输入的代码与服务的用户帐户,并通过此实用程序限制该用户的代码访问。
不幸的是,加载程序集并使用类对象的主要应用程序需要完整的权限。我认为我可以通过AppDomains安全地运行它。谢谢 – 2012-01-15 19:44:16
“沙盒”是一种常见的艺术术语,它听起来像是你想要做的。这可能会帮助你在你的谷歌搜索。 – 2012-01-15 18:12:12
沙盒/ CAS是要走的路。即使您删除所有参考文献,也可能存在不安全的情况,例如''Environment.Exit'可能不需要,但是在mscorlib.dll – 2012-01-15 18:26:53
看着Sandboxing/CAS,我认为这是一条路。多谢你们! – 2012-01-15 19:48:48