MSDN のドキュメントでは、SecurityPermissionFlag.SkipVerificationは次のように述べています。
このアセンブリ内のコードの検証をスキップする機能。この権限が付与されている場合、検証不可能なコードを実行できます。
これは、信頼性の高いコードにのみ付与する必要がある強力なアクセス許可です。
このフラグは、Deny、Assert、および PermitOnly などのスタック修飾子と共に動的に使用された場合、効果がありません。
私が現在開発しているいくつかのプロジェクトは、SkipVerificationFlag
. 具体的なケースは、メソッド全体を呼び出すアセンブリが完全に信頼されていないため、Castle Windsor を使用して制御コンポーネントの反転のインスタンスを作成するカスタム クラスです。
これは、次のメソッドのc#の疑似コードである可能性があります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
ます。つまり、そのドアを使用するサードパーティのコードはセキュリティ透過的です。
私から見れば、ウィンザー城は危険なことをしないので、旗全体を使っても安全だ。
セキュリティの観点から、私の決定の悪い結果は何ですか?
ありがとうございました。