4

シェル アプリケーションでは、実行時に他の .NET アセンブリを読み込んで実行できる必要がありますが、それらに完全な信頼を与えることはできません。基本的に、それら (ロードされたアセンブリ) がシステム リソース (スレッド、ネットワークなど) に触れないように制限したいと考えています。 ただし、分離ストレージは例外です。ただし、「自分」からのアセンブリは、完全な信頼で実行する必要があります。

Code Access Security を検討していますが、それを使用すべきかどうかはよくわかりません。

これについてどう思いますか?

4

1 に答える 1

9

CAS は、ここで必要なもののほとんどです。具体的には、アセンブリを独自のアプリケーション ドメインにロードします。

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

//do your work with the untrusted assembly/type

AppDomain.Unload(myDomain);

アプリケーション ドメイン、さまざまなゾーン、およびそれらに割り当てられている既定のアクセス許可セットについて調べてください。インターネットは、アセンブリが実際に実行できるシステム定義のゾーン/アクセス許可セットの中で最も制限が厳しいものです (制限付きゾーンもあります。このゾーンに分類されるアセンブリは実行できません)。.NET 構成ツールを使用して、アクセス許可セットを作成し、アクセス許可セットを付与するためにコードが満たさなければならない条件 (証拠) を定義できます。

于 2010-09-27T20:17:30.457 に答える