我在使用C#的能力來按需編譯代碼作爲腳本語言的基礎。我想知道,我如何對我正在執行的腳本進行沙盒處理,以便它們無法訪問文件系統,網絡等。基本上,我希望對正在運行的腳本擁有有限的權限。Assembly.CreateInstance和安全
的步驟,我採取:
CompilerResults r = CSharpCodeProvider.CompileAssemblyFromSource(source);
Assembly a = r.CompiledAssembly;
IScript s = a.CreateInstance(...);
s.EntryPoint(...);
是否有任何東西阻止CallyourScriptHere()恢復您的示例中設置的所有權限? – MarkP
'RevertAll'僅恢復當前堆棧幀中設置的CAS權限,因此在'CallYourScriptHere'中調用它只會撤消在該方法中所做的更改。 – MagnatLU
這不能有效防範潛在的惡意代碼。請參閱http://blogs.msdn.com/b/shawnfa/archive/2006/02/02/523390.aspx,瞭解爲什麼不應將堆棧走路修飾符用於沙盒。 –