Strict 和 Type Strict 上下文句柄

对所有上下文句柄使用 strict_context_handle 属性。 默认情况下,上下文句柄不与接口关联,这意味着可以在一个接口上创建上下文句柄,然后将其传递给另一个接口。 这是一种简单的攻击,许多 RPC 服务器无法阻止它。

如果两个接口在同一进程中共存,则攻击者可以在一个接口上打开上下文句柄,并将其传递给另一个接口,这可能会越过意外数据。 许多开发人员认为他们的软件是进程中唯一的接口,但通常情况并非如此,因为系统和许多第三方组件都在内部使用 RPC,这些接口可以创建上下文句柄。 使用 strict_context_handle 属性时,RPC 运行时可确保在一个接口上创建的上下文只能作为参数传递给该接口的方法。

在为 Windows Vista 开发应用程序的情况下,建议使用 type_strict_context_handle 。 默认情况下,上下文句柄不与特定类型关联。 在同一进程中使用多种类型的上下文句柄时,恶意客户端可能会传递上下文句柄来代替另一个上下文句柄,从而产生不良结果。 使用 type_strict_context_handle 允许应用程序强制实施上下文句柄类型一致性,并防止任何不匹配的上下文句柄类型使用。