Identificadores de contexto restritos e de tipo estrito
Use o atributo strict_context_handle para todos os identificadores de contexto. Por padrão, um identificador de contexto não está associado a uma interface, o que significa que um identificador de contexto pode ser criado em uma interface e, em seguida, passado para outra. Este é um ataque fácil, e muitos servidores RPC não conseguem evitá-lo.
Se duas interfaces coexistirem no mesmo processo, um invasor pode abrir um identificador de contexto em uma interface e passá-lo para outra, o que pode tropeçar nos dados inesperados. Muitos desenvolvedores acreditam que seu software é a única interface em um processo, mas muitas vezes esse não é o caso, porque tanto o sistema quanto muitos componentes de terceiros usam RPC internamente, e essas interfaces podem criar identificadores de contexto. Quando o atributo strict_context_handle é usado, o tempo de execução RPC garante que um contexto criado em uma interface possa ser passado como um argumento apenas para métodos dessa interface.
Em situações em que um aplicativo é desenvolvido para o Windows Vista, o uso de type_strict_context_handle está disponível e recomendado. Os identificadores de contexto não estão associados a um tipo específico por padrão. Quando vários tipos de identificadores de contexto são usados no mesmo processo, é possível que um cliente mal-intencionado passe um identificador de contexto no lugar de outro para produzir resultados indesejáveis. O uso de type_strict_context_handle permite que os aplicativos imponham consistência de tipo de identificador de contexto e impeçam qualquer uso de tipo de identificador de contexto incompatível.