2

MSDN のドキュメントでは、SecurityPermissionFlag.SkipVerificationは次のように述べています。

このアセンブリ内のコードの検証をスキップする機能。この権限が付与されている場合、検証不可能なコードを実行できます。

これは、信頼性の高いコードにのみ付与する必要がある強力なアクセス許可です。

このフラグは、Deny、Assert、および PermitOnly などのスタック修飾子と共に動的に使用された場合、効果がありません。

私が現在開発しているいくつかのプロジェクトは、SkipVerificationFlag. 具体的なケースは、メソッド全体を呼び出すアセンブリが完全に信頼されていないため、Castle Windsor を使用して制御コンポーネントの反転のインスタンスを作成するカスタム クラスです。

これは、次のメソッドのの疑似コードである可能性がありますSkipVerification

[SecuritySafeCritical]
[ReflectionPermission(SecurityAction.Assert, Unrestricted = true)]
[SecurityPermission(SecurityAction.Assert, SkipVerification = true)]
public override TComponent Resolve<TComponent>(string id = null, bool release = true, object argumentsAsAnonymousObject = null)
{
     // Some stuff...
     windsorContainer.Resolve<TComponent>(...);
}

Castle Windsorアセンブリは、で完全に信頼されていAppDomainます。

質問は...

Castle Windsor のコードを信頼しているだけで、それ以上のものは信頼していないと思うのは間違っていますか?

上記の疑似コードの消費者/呼び出し元は、信頼されていない (完全に信頼されていない) にありAppDomainます。つまり、そのドアを使用するサードパーティのコードはセキュリティ透過的です。

私から見れば、ウィンザー城は危険なことをしないので、旗全体を使っても安全だ

セキュリティの観点から、私の決定の悪い結果は何ですか?

ありがとうございました。

4

1 に答える 1

0

私の知る限り、そして入手可能な情報を見ると、を主張することに他の結果はないようですSkipValidation

クリティカルセクション内で実行されているコードに完全に依存できる場合、それは安全なコードと見なすことができるため、Castle Windsor(またはその他の信頼できるコード)に問題はありません。

于 2013-03-07T11:54:32.447 に答える