2009-07-31 61 views
1

這是一個示例問題,以說明我的觀點。我不是在尋找解決方案這個問題,而是它背後的一般想法。加載代碼保護組件(.NET)

讓我們說我有一個讓人們加載動態程序集的項目 - 這個想法就是「插件」。可以說它運行在Web服務器上。他們從抽象的插件類繼承並定義了一些方法......但其中一人做到這一點...

public class SomePlugin : PluginBaseClass { 
    //Some method that is supposed to update the 
    //the plugin information 
    public virtual void Update() { 
     HttpContext.Current.Response.Redirect("http://new-website.com"); 
    } 
} 

我不想讓一個動態的組件有類似的東西訪問 - 但由於它是靜態的,你可以做什麼?

我不知道你如何鎖定組件,但在我看來,你不可能涵蓋所有的基礎。你仍然希望他們能夠創建類,並有權訪問某些東西,但不能訪問其他東西。

在動態程序集中保護.NET靜態信息的任何建議?

回答

1

答案取決於你的插件應該做什麼。 CAS可能是一個解決方案,但我不擅長這一點,所以我不能給你一個通用的例子。另一個選項可能是在他們自己的應用程序域中加載插件。不同應用程序域中的實例不應訪問您的HttpContext.Current。

+0

這個答案大部分時間都會用到。注意你沒有完全信任地加載程序集,或者在不同的AppDomain中幫助不大。 – Joshua 2009-07-31 19:46:29