2

私は自分のアプリ用のプラグイン マネージャーを作成しました。codedom を使用して C# コードをクラス ライブラリにコンパイルし、その型をインスタンス化します。それは完全に機能し、コンパイルされたアセンブリのアクセス許可を制限したいと思います。残念ながら、その方法がわかりません。私が理解している限り、何らかの方法で CompilerParameters.Evidence を使用する必要がありますが、その方法は不明です。明確にするために、アセンブリを特定のゾーンとして単純に分類したくありません。プラグイン マネージャー コンストラクターで引数として渡されるアクセス許可セットに制限したいと考えています。また、アセンブリを新しい appdomin にロードしないことにも言及したいと思います。アセンブリは、アプリケーションの残りの部分と同じドメインで実行されます。

ありがとう。

4

1 に答える 1

1

セキュリティを処理する CodeDOM の例は、Google にとって扱いにくいものです。数時間読んだ後、2 つのアプローチを見つけました。

ユースケースシナリオに合わせて設計されているため 、マネージドアドインフレームワークが最適なようです。プラグイン アセンブリ コードへのアクセスを制限する

CAS (Code Access Security)もオプションですが、あまり人気がなく、廃止されつつあるようです。これは、この [SO 投稿][3] から取り上げた例です。

var myEvidence = new Evidence(new object[] {SecurityZone.Internet});
var newDomain = AppDomain.CreateDomain("InternetDomain");
myDomain.Load("MyUntrustedAssembly.dll", myEvidence);
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType");

CAS 参照 .NET/セキュリティ: ランタイムで読み込まれるアセンブリが特定の API にアクセスするのを制限する http://www.gamedev.net/community/forums/topic.asp?topic_id=418038 http://www.go4answers.com/Example/codedom -security-64586.aspx

于 2010-12-24T12:16:52.873 に答える