2012-05-09 9 views
0

特定の.NET機能/クラスのコードアクセスを制限することはできますか?ASP.NETフレームワークの機能からC#コードを制限する

たとえば、MVC CMS用のプラグインモジュールがあります。私はサードパーティのモジュールが直接Fileクラスを使用できるようにしたくありません。私は、モジュールがそれ自身の指定された 'ルート'フォルダ(サンドボックス)内のファイルにしかアクセスできないように、APIで包む必要があります。それ以外の場合、モジュールはCMSシステムファイルを含むサーバー全体にファイルアクセスできます。

フレームワークの特定の機能を特定の名前空間で使用することを制限する方法はありますか?あるいは、私が取るべき別のアプローチがありますか?

CMSの名前空間はMyCms

すべてのモジュールがMyCms.Module.xxxxx

モジュールは、名前のメインMVC名前空間にもたらされるだけで、標準的なMVCの構造体である名前空間を取るです:あなたの概要を与えることを

ルートはモジュールコントローラに要求をルーティングするように自動的に設定されます。

したがって、モジュールはASP.NETフレームワークへのデフォルトのアクセス権を持ちます。 MyCms.Module.xxxxx名前空間が特定のことを実行できないように制限することができるようにしたいと考えています。

私はここで間違ったアプローチをしましたか?インフラストラクチャを正直に変えたいとは思っていませんが、主要なCMSインフラストラクチャを不正なモジュールから適切に保護できない場合には、強制されることがあります。

+1

スコープ指定メソッドで何が問題になりますか?たとえば、プライベート、内部、またはオーバーレイできないメソッドを作成しますか? –

+0

サードパーティ製アセンブリのコードを個別のAppDomainに読み込むことができます(アンロードが可能ですが、より多くの作業が可能です)。このためにSystem.AddInを使用します。また、サードパーティのコードを呼び出す前に特定の権限を削除することもできます。 CASの開始点については、http://blogs.msdn.com/b/shawnfa/archive/2009/06/12/clr-v4-security-policy-roundup.aspxを参照してください。 –

答えて

0

はうん、.NETは/共通言語ランタイムは、あなたがどのようなコードのためで置くことができる権限の制限やカスタマイズの広いセットをサポートすることができます何をするって。

Thisは、それが4

http://msdn.microsoft.com/en-us/library/.aspx

Thisを.NETに前に働いていた方法の概要である、それはこのようなものは少し複雑であり、それとの私の仕事は、これらに限定された今

をどのように動作するかです私が書かなければならなかったテストケースのためにその一部をバイパスしていましたが、あなたが求める機能性を正確に提供するために書かれました。

+0

ありがとう、私は昨日CASと仕事を始めました。私の最初の解決策は、アプリケーションに最も低いレベルのセキュリティを与え、安全と考えられるアセンブリ(つまり、system.web.mvcとコアCMSアセンブリ)に対してfullTrustAssembly要素を追加することです。次に、各APIメソッドのSecuritySafeCritical属性を使用して、モジュールがファイルシステムにアクセスするためのAPIを作成します。このアプローチに関するあなたの考えは何ですか?私はそれをまだコード化していないので、それがうまくいくかどうか分からない。あなたが克服しなければならなかった障害について何か提案や提案をしてもらえますか?ありがとう。 – Chris

0

サードパーティのソースコードまたはコンパイル済みのAPI dllを提供していますか? それが後であれば、インターフェイスを設定し、サードパーティが使用したい方法だけを公開することは、私の答えのように聞こえます。 もちろん、あなたのコードベースの建築家にも大きく依存しています。

または単に指定された文書は、トリックを行うだろう、あなたのサードパーティを提供するだけでなく

+0

セットアップの概要について質問を更新しました。つまり、モジュールはソースコードにアクセスできます。 – Chris

関連する問題