我正在研究cs-script,想了解它的安全性如何。我知道脚本是动态加载和卸载的,但是这个脚本是否可以逃离执行程序集?也就是说,它是否可以使用反射从同一进程中的其他程序集访问和实例化类?
所以我的问题是,cs-script默认是否具有内置安全性,或者它是否不关心安全性?
using MyOtherAssembly;
CS-Script使用隐式加载来尝试根据using语句中的命名空间确定要加载哪个程序集。这并不保证在所有情况下都能正常工作,如果出现问题,则需要使用显式加载,例如,您可以给CS-Script一个指令来明确加载所需的程序集:
//css_ref "..\MyOtherAssembly.dll"
using MyOtherAssembly;
//css_ref是一种特殊的注释,由CS-Script处理为指令来加载程序集,在这种情况下,被引用的程序集在脚本的父目录中。这与普通程序集的项目文件中的程序集引用类似。您还可以使用CS-Script命令行显式加载程序集。在cs-script中使用.Net安全凭据的示例可在http://www.csscript.net/Samples.html (sandbox.zip)找到。
为了安全地执行不受信任的cs-script(尽可能隔离),在加载脚本之前,创建一个带有安全限制的新AppDomain
,然后在主域和脚本域之间进行数据调度。请参阅https://msdn.microsoft.com/en-us/library/bb763046%28v=vs.110%29.aspx。