6

検証できないメソッドを含む .net アセンブリがあります。

このアセンブリをサンドボックス appdomain に読み込もうとしています。

非管理対象ではなく、スキップ検証でロードすると、検証例外が発生します。そのようです:

new SecurityPermission(SecurityPermissionFlag.Execution | 
                       SecurityPermissionFlag.SkipVerification);

管理されていないアクセス許可で読み込むと機能しますが、アプリ ドメインは十分に「サンドボックス化」されません。

new SecurityPermission(SecurityPermissionFlag.Execution | 
                       SecurityPermissionFlag.SkipVerification |
                       SecurityPermissionFlag.UnmanagedCode);

また、私は .Net 4 を実行しています。上記を機能させるには、次のように透過性モデル レベル 1 に切り替える必要がありました。

[assembly:SecurityRules(SecurityRuleSet.Level1)]

だから、私の質問は:

  1. UnamangedCode 権限なしで未検証のコードを実行する方法はありますか。
  2. 上記を Level2 セキュリティ ルールセットで機能させる方法はありますか。

ありがとう!

4

1 に答える 1

1

UnamangedCodeの許可なしに未確認のコードを実行する方法はありますか?

あったとしても、その時点でセキュリティを放棄していたでしょう。検証不可能なコードには、管理されていないコードと同じ能力があります。たとえば、型システムを破ることができます。

SkipVerificationを使用してUnmanagedCodeを使用しない(またはその逆)ことは意味がありません。この2つは同等であり、両方が存在するフレームワークのバグであると私は考えています。

于 2012-06-07T16:01:50.017 に答える