Partilhar via


Identificadores de contexto estritos 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. Esse é um ataque fácil e muitos servidores RPC não conseguem impedi-lo.

Se duas interfaces coexistirem no mesmo processo, um invasor poderá abrir um identificador de contexto em uma interface e passá-lo para outra, o que pode ultrapassar os dados inesperados. Muitos desenvolvedores acreditam que seu software é a única interface em um processo, mas muitas vezes esse não é o caso, porque o sistema e 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 a consistência do tipo de identificador de contexto e evitem qualquer uso de tipo de identificador de contexto incompatível.