簡體   English   中英

Assembly.CreateInstance和安全性

[英]Assembly.CreateInstance and security

我正在考慮使用C#的能力來按需編譯代碼作為腳本語言的基礎。 我想知道,我如何沙箱我正在執行的腳本,以便他們無法訪問文件系統,網絡等。基本上,我希望對正在運行的腳本的權限受到限制。

我采取的步驟:

CompilerResults r = CSharpCodeProvider.CompileAssemblyFromSource(source);

Assembly a = r.CompiledAssembly;

IScript s = a.CreateInstance(...);

s.EntryPoint(...);

建議的方法是在沙盒應用程序域中執行可疑代碼。 http://blogs.msdn.com/b/shawnfa/archive/2006/04/19/579066.aspx給出了幾個原因,更重要的一個原因是大多數其他潛在的方法都被棄用了。 NET 4.0。

編輯:無視,這不安全!

查看System.Security.Permissions.SecurityPermission (以及類似FileIOPermission的子類)和本教程 如果要暫時拒絕代碼執行不安全的操作,可以使用如下語句:

NamedPermissionSet ps = new NamedPermissionSet("Nothing");
ps.Deny();
CallYourScriptHere();
CodeAccessPermission.RevertAll();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM