次の方法で共有


Strict および Type Strict コンテキスト ハンドル

すべてのコンテキスト ハンドルに 対して strict_context_handle 属性を使用します。 既定では、コンテキスト ハンドルはインターフェイスに関連付けられません。つまり、あるインターフェイスでコンテキスト ハンドルを作成し、別のインターフェイスに渡すことができます。 これは簡単な攻撃であり、多くの RPC サーバーがそれを防ぐのに失敗します。

同じプロセスで 2 つのインターフェイスが共存している場合、攻撃者は 1 つのインターフェイスでコンテキスト ハンドルを開き、別のインターフェイスに渡すことができます。これにより、予期しないデータが移動する可能性があります。 多くの開発者は、プロセス内でソフトウェアが唯一のインターフェイスであると考えていますが、システムと多くのサードパーティ製コンポーネントの両方が内部的に RPC を使用し、それらのインターフェイスでコンテキスト ハンドルを作成できるため、多くの場合はそうではありません。 strict_context_handle属性を使用すると、RPC ランタイムによって、1 つのインターフェイスで作成されたコンテキストを、そのインターフェイスのメソッドにのみ引数として渡すことができます。

Windows Vista 用にアプリケーションを開発する場合は、 type_strict_context_handle の使用が可能であり、推奨されます。 既定では、コンテキスト ハンドルは特定の型に関連付けられません。 同じプロセスで複数の種類のコンテキスト ハンドルを使用すると、悪意のあるクライアントが別のコンテキスト ハンドルの代わりにコンテキスト ハンドルを渡して望ましくない結果を生成する可能性があります。 type_strict_context_handleを使用すると、アプリケーションはコンテキスト ハンドル型の一貫性を適用し、コンテキスト ハンドルの型の不一致の使用を防ぐことができます。