我的應用程序有一個插件模型,允許第三方開發人員編寫將在主應用程序中執行的程序集。直到現在,實際使用只允許受信任的開發人員提供插件。加載不受信任的程序集
我想將這個框架公開給不受信任的開發人員。爲此,我希望將程序集限制在內存操作中,該操作不會觸及任何本地資源(硬件,註冊表,數據庫等),並且只允許使用最大內存量。
目前,與受信任的程序集,我只是使用Assembly.Load和反射來實例化對象。我需要的是如何限制從外部程序集加載的代碼的權限。
我的應用程序有一個插件模型,允許第三方開發人員編寫將在主應用程序中執行的程序集。直到現在,實際使用只允許受信任的開發人員提供插件。加載不受信任的程序集
我想將這個框架公開給不受信任的開發人員。爲此,我希望將程序集限制在內存操作中,該操作不會觸及任何本地資源(硬件,註冊表,數據庫等),並且只允許使用最大內存量。
目前,與受信任的程序集,我只是使用Assembly.Load和反射來實例化對象。我需要的是如何限制從外部程序集加載的代碼的權限。
http://msdn.microsoft.com/en-us/library/ms972968.aspx - 顯示如何將插件加載到單獨的AppDomain中。
http://msdn.microsoft.com/en-us/library/ms130766.aspx - 創建AppDomain的這種重載將允許您指定插件在不可信時所具有的權限。
基本上你需要將程序集加載到單獨的AppDomain中。它很好解釋瞭如何做到這一點,以及如何限制其他程序集加載到MSDN文檔中新的AppDomain中。您還需要閱讀CAS。這允許您爲加載的assemply提供API,同時限制可以在不同信任級別調用的方法。
[.NET可能不適合運行完全不受信任的代碼](http://security.stackexchange.com/questions/87001/),儘管我希望不是這樣。 – 2015-04-27 23:31:32