Fijación de sesión OpenID con CSRF

3

Esta respuesta describe una situación en la que se puede usar CSRF para engañar a un usuario final para que ingrese una tarjeta de crédito en la cuenta de Paypal de otra persona. También destaca el hecho de que las solicitudes GET que cambian de estado son tan malas como las solicitudes POST.

Esto es bastante simple de entender cuando se trata de una única autenticación basada en formularios. Pero si introducimos un sistema de autenticación basado en GET y POST en diferentes dominios que no "poseemos", no estoy seguro de cómo prevenir el CSRF en esa situación.

  

Si extendiera esto a OpenID, ¿significa esto que un usuario podría inyectar sus credenciales de OpenID en mi sesión?

¿Cuál es la forma correcta de abordar este problema?

    
pregunta random65537 08.11.2011 - 17:50
fuente

1 respuesta

2

Responderé a mi propia pregunta, ya que no he visto que esta práctica sea recomendada en varios SDKs y ejemplos de código . Aquí está mi teoría:

Al hacer clic en el botón "iniciar sesión" en la parte que confía (RP), deben suceder dos cosas:

  1. Escriba un valor aleatorio en una cookie de dominio SECURE HTTPOnly

  2. Luego, haga que el IDP redirija a enlace  donde "myrandom" es igual al valor dentro de la cookie.

  3. Cuando el proceso de OpenID inicie sesión, se enviará a la URL anterior, luego podrá tomar la cadena CSRF y compararla con la cookie.

Avíseme si ve algún defecto en este enfoque

    
respondido por el random65537 08.11.2011 - 18:02
fuente

Lea otras preguntas en las etiquetas