我正在开发一个.NET应用程序,它有第三方插件。这些插件作为EXE文件提供,可与应用程序API和数据一起使用。
出于安全方面的考虑,我希望能够成为" sandbox"他们,当他们通过我的应用程序启动时。特别是,最重要的是能够限制对文件系统的驱动器或目录的访问。
有没有办法通过AppDomain执行此操作?或者以任何其他方式?
由于我的软件向COM公开API,因此可能无法在托管代码中编写某些外部插件,但可以删除非.NET插件支持。对我们来说更重要的是对这些插件进行沙盒化。
任何解决此问题的方法都表示赞赏。
答案 0 :(得分:1)
鉴于您需要为一个非(必然)完全基于.NET的进程执行此操作,AppDomain
可能不适合该任务。
我会考虑在Windows Job Object中运行处理。这使您可以设置一个沙箱,限制进程对CPU和内存等事物的使用。
已使用自由访问控制列表(DACL s)基于用户帐户处理对文件系统的访问。要限制对文件系统的某些特定部分的访问,请设置用于运行沙盒作业的帐户,并为允许使用的文件系统部分设置允许访问的ACE。如果您需要支持多个运行沙盒作业的用户,您可能需要为沙盒作业设置用户组,并将ACE与组关联,而不是将各个用户关联。