IStackWalk インターフェイス


呼び出し履歴内のすべての呼び出し元に、保護されたリソースへのアクセスに必要なアクセス許可を設定するかどうかを判断するスタック ウォークを管理します。Manages the stack walk that determines whether all callers in the call stack have the required permissions to access a protected resource.

public interface class IStackWalk
public interface IStackWalk
public interface IStackWalk
type IStackWalk = interface
Public Interface IStackWalk


部分的に信頼されたコードは、常にセキュリティ上のリスクをもたらします。Partially trusted code always presents a security risk. リソースにアクセスするためのアクセス許可がない悪意のあるコードに代わってアクションを実行することがあります。It can sometimes be manipulated to perform actions on behalf of malicious code that does not have permission to access a resource. このようにして、悪意のあるコードが許可されるよりも高いセキュリティアクセスを実現できます。In this way, malicious code can achieve higher security access than it should be allowed.

共通言語ランタイムは、すべての呼び出しでスタックウォークを実行することで、これらの攻撃からマネージコードを保護するのに役立ちます。The common language runtime helps protect managed code from these attacks by running a stack walk on all calls. スタックウォークでは、呼び出し履歴のすべてのコードが、保護されたリソースにアクセスするためのアクセス許可を持っている必要があります。The stack walk requires that all code in the call stack has permission to access a protected resource. 攻撃を試みるコードは常に呼び出し履歴内のどこかにあるため、独自のセキュリティアクセス許可を超えることはできません。Because the code attempting the attack will always be somewhere in the call stack, it will be unable to exceed its own security permissions.



スタック内の上位の呼び出し元がリソースへのアクセス許可を付与されていない場合であっても、呼び出し元のコードが現在のアクセス許可で識別されるリソースにアクセスできることをアサートします。Asserts that the calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource.


呼び出し履歴のすべての呼び出し元に、現在のアクセス許可オブジェクトで指定されたアクセス許可が付与されているかどうかを判断します。Determines at run time whether all callers in the call stack have been granted the permission specified by the current permission object.


呼び出し元のコードを通過する現在のオブジェクトのすべての Demand() が失敗します。Causes every Demand() for the current object that passes through the calling code to fail.


呼び出し側コードによってパススルーされる現在のものを除き、全オブジェクトのあらゆる Demand() を失敗させます。これは、呼び出しスタックの上位にあるコードに対して他のリソースにアクセスするためのアクセス権限が付与されている場合にも当てはまります。Causes every Demand() for all objects except the current one that passes through the calling code to fail, even if code higher in the call stack has been granted permission to access other resources.