2011-07-29 9 views
7

MSDN dice que si RevertToSelf() falla, el programa debería terminar inmediatamente, ya que de lo contrario continuará ejecutándose en nombre del cliente que se está suplantando y que es inapropiado. Ahora supongo que sí¿Es fatal si RevertToSelf() después de ImpersonateSelf() falla?

ImpersonateSelf(SecurityImpersonation); 

y la llamada se realiza correctamente, entonces yo llamo RevertToSelf() y de que éste no. El hilo continúa ejecutándose con los privilegios del proceso actual. ¿Es fatalmente malo también?

+0

Parece una de esas funciones que es imposible fallar. El único escenario de falla en el que podría pensar es negarse a usted mismo el permiso "Establecer un token de hilo" en la DACL para el hilo (o proceso) después de hacerse pasar por usted (aunque soy demasiado flojo para intentarlo). Lo que pasa con la suplantación es que afecta * todo * al que intenta acceder el hilo. Probablemente consideraría no ser fatal estrictamente en el sentido de ser "imposible" y tomar precauciones (aunque probablemente no exista ninguna diferencia práctica entre no hacerse pasar y hacerse pasar por otra persona). – Luke

Respuesta

4

Me gusta su pregunta, y MSDN no lo tiene claro.

Miré a Programming Windows Security páginas (Keith Brown) 112 a 117. ImpersonateSelf hace todo el trabajo que podría hacer usted mismo llamando

  • OpenProcessToken
  • DuplicateTokenEx (... TokenImpersonation ...)
  • SetThreadToken
  • CloseHandle

Mientras RevertToSelf no es más que una llamada a

SetThreadToken(0,0) 

pasar dos parámetros nulos instruyen el método para volver a la ficha anterior. No tiene que ocuparse de la suplantación frente a tokens primarios y derechos de acceso a tokens. La llamada siempre tendrá éxito.

Y si observa los códigos de error de la función RpcRevertToSelf, verá que los códigos relacionados con RPC a un lado, el único modo de falla es si no está personificando.

Digo que es seguro asumir que RevertToSelf (llamado desde el mismo hilo que ImpersonateSelf) siempre tendrá éxito.

Cuestiones relacionadas