特定の.NET機能/クラスのコードアクセスを制限することはできますか?ASP.NETフレームワークの機能からC#コードを制限する
たとえば、MVC CMS用のプラグインモジュールがあります。私はサードパーティのモジュールが直接Fileクラスを使用できるようにしたくありません。私は、モジュールがそれ自身の指定された 'ルート'フォルダ(サンドボックス)内のファイルにしかアクセスできないように、APIで包む必要があります。それ以外の場合、モジュールはCMSシステムファイルを含むサーバー全体にファイルアクセスできます。
フレームワークの特定の機能を特定の名前空間で使用することを制限する方法はありますか?あるいは、私が取るべき別のアプローチがありますか?
CMSの名前空間はMyCms
すべてのモジュールがMyCms.Module.xxxxx
モジュールは、名前のメインMVC名前空間にもたらされるだけで、標準的なMVCの構造体である名前空間を取るです:あなたの概要を与えることを
ルートはモジュールコントローラに要求をルーティングするように自動的に設定されます。
したがって、モジュールはASP.NETフレームワークへのデフォルトのアクセス権を持ちます。 MyCms.Module.xxxxx名前空間が特定のことを実行できないように制限することができるようにしたいと考えています。
私はここで間違ったアプローチをしましたか?インフラストラクチャを正直に変えたいとは思っていませんが、主要なCMSインフラストラクチャを不正なモジュールから適切に保護できない場合には、強制されることがあります。
スコープ指定メソッドで何が問題になりますか?たとえば、プライベート、内部、またはオーバーレイできないメソッドを作成しますか? –
サードパーティ製アセンブリのコードを個別のAppDomainに読み込むことができます(アンロードが可能ですが、より多くの作業が可能です)。このためにSystem.AddInを使用します。また、サードパーティのコードを呼び出す前に特定の権限を削除することもできます。 CASの開始点については、http://blogs.msdn.com/b/shawnfa/archive/2009/06/12/clr-v4-security-policy-roundup.aspxを参照してください。 –