0

特定の .NET 機能/クラスのコード アクセスを制限することはできますか?

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

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

概要を説明するには:

CMS ネームスペースはMyCms

すべてのモジュールは名前空間を取りますMyCms.Module.xxxxx

モジュールは、名前のメイン MVC 名前空間に組み込まれる単なる標準の MVC 構造であり、ルートは、要求をモジュール コントローラーにルーティングするように自動的に設定されます。

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

ここで間違ったアプローチを取りましたか?正直なところ、私はインフラストラクチャを変更することに熱心ではありませんが、いたずらなモジュールからメインの CMS インフラストラクチャを適切に保護できない場合は、変更を余儀なくされる可能性があります。

4

2 に答える 2

0

ええ、.net /共通言語ランタイムは、どのコードが何を実行できるかについて、さまざまな特権制限とカスタマイズをサポートしています。

これは、.net4より前の動作の概要です。

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

これが今の仕組みです

このようなものは少し複雑で、私が作成しなければならなかったテストケースのためにその一部をバイパスすることに限定されていましたが、それはあなたが求める機能を正確に提供するために作成されました。

于 2012-05-10T21:17:45.590 に答える
0

サード パーティのソース コードまたはコンパイル済みの API dll を提供しますか? それが遅い場合は、インターフェースを設定し、サードパーティに使用させたいメソッドのみを公開することが、私には答えのように思えます。もちろん、コードベースのアーキテクトにも大きく依存しています。

または、サードパーティに指定されたドキュメントを提供するだけでもうまくいきます

于 2012-05-09T23:27:23.890 に答える