2

サンドボックス環境でコードを実行するアプリケーションを作成しています。この環境では、信頼されていないコードが明示的に指定されたリソースを処理し、定義されたデータ型を返すことのみを許可する必要があります。この記事にあるプリンシパルを使用して、サンドボックスをセットアップしています。

方法: サンドボックスで部分的に信頼されたコードを実行する

また、サンドボックス環境内で実行する必要があるコードもいくつかあります。残念ながら、サンドボックス内で実行するようにタイプをセットアップしようとすると、次のエラーが発生します。

タイプ 'MyTypeRunningInSandbox' が継承セキュリティ ルールに違反しています。派生型は、基本型のセキュリティ アクセシビリティと一致するか、アクセスしにくくする必要があります。

基本型と派生型の両方が私によって作成されたものであり、どちらも他方よりも多かれ少なかれ安全であってはならないため、なぜこのエラーが発生するのかわかりません。

私のアプリケーション構造(理解を助けるため):

TypeLoader class
   \
    Trusted Sandbox Manager (i.e. sets up a the new sandbox)
     \              (the error is happening in this class while creating the 
      |             new app domain) 
      |
      |Untrusted Sandbox Manager (i.e. runs the untrusted code)

上記のマイクロソフトの記事に関して私のソリューションを比較すると、私のコードは次の行に相当する部分で失敗しています。

ObjectHandle handle = Activator.CreateInstanceFrom(
newDomain, typeof(Sandboxer).Assembly.ManifestModule.FullyQualifiedName,
       typeof(Sandboxer).FullName );

この問題のトラブルシューティング方法について何か考えはありますか?

4

1 に答える 1

5

私はついにこれを理解しました。信頼されたアセンブリと厳密な名前がどのように機能するかをよりよく理解する必要がありました。問題は、信頼されていない型の基本型が、以前に信頼済みとして設定したのと同じ厳密な名前のキーで署名されたアセンブリにあることでした。基本型を別の厳密な名前キーを持つ新しいアセンブリに移動すると、うまく機能し始めました。今ではとても当たり前のように思えますが、なぜ以前にそれを見なかったのか想像できません.

これを考慮してくれた人に感謝します!

于 2011-03-19T19:02:42.730 に答える