Поделиться через


Будьте осторожны с другими конечными точками RPC, работающими в том же процессе

Когда приложение находится в процессе с другими серверами RPC, все приложения прослушивают все протоколы. Таким образом, если компонент вызывает RpcServerUseProtseq* только для LRPC, он не обязательно доступен только через LRPC. Он может быть доступен по другим протоколам, так как другие серверы RPC в процессе могут прослушивать каналы или сокеты (например).

Как и в случае со строгими дескрипторами контекста, отсутствие в процессе другой конечной точки не означает, что другая конечная точка не существует. Независимо от того, как вы регистрируете сервер, между интерфейсом и конечной точкой нет специальной связи; все интерфейсы вызываются на всех конечных точках в этом процессе. Это еще одна причина, по которой модель безопасности конечных точек неэффективна. Если дескриптор безопасности помещается в конечную точку, злоумышленники могут вызвать интерфейс на другой конечной точке.

Чтобы обеспечить вызов процесса только для определенной последовательности протокола, зарегистрируйте функцию обратного вызова безопасности, и в этой функции проверка, в какой последовательности протокола выполняется вызов.