Autenticación frente a cookie

5

Aquí lo que quiero decir con los dos:

Autenticación de sesión : Estado de "autenticado" almacenado en una variable de sesión.

Autenticación de cookies : el estado "es autenticado" almacenado en una cookie protegida del genio por HMAC.

Pregunta : ¿Hay alguna ventaja de una manera en comparación con la otra desde un punto de vista de seguridad?

La mejor razón por la que parece encontrar el enfoque de cookies es que el servidor tiene que almacenar menos datos, que no están relacionados con la seguridad.

Notas adicionales

Digamos que me dices que usar la autenticación de cookies es mejor ...

He visto tantas aplicaciones web que utilizan autenticación de cookies pero no las vinculo con la sesión. Es un problema porque almacenan la información del usuario como su acceso en la sesión. Por lo tanto, puede crear un ataque simple como el inicio de sesión en su propia cuenta que apenas tiene permiso, luego robar la cookie de sesión de un administrador y luego hacerse pasar por él.

Con eso, me refiero a que, independientemente de la fuerza que haya tenido el esquema basado en cookies en el enfoque de la sesión, simplemente la perdió (debido a una mala gestión de la sesión). En un escenario como el anterior, un enfoque basado en cookies no tiene nada de seguridad.

    
pregunta Gudradain 06.07.2015 - 15:24
fuente

3 respuestas

2

No soy un gran fanático de la autenticación de cookies, tal como lo describiste.

La autenticación de sesión asigna un token aleatorio al cliente que no tiene otro significado que no sea un puntero a la información de sesión almacenada en el servidor. Los problemas principales son la baja entropía para la generación de tokens.

Sin embargo, la autenticación de cookies tiende a tener más problemas. Debido a que la información en la cookie lleva datos confidenciales con ella, debe tener algún tipo de solución HMAC con ella para evitar la manipulación. Ruby on Rails hace esto, y han tenido problemas de criptografía y problemas de ejecución de código. Play Framework hace esto, y han tenido problemas de criptografía y problemas de ejecución de código. Este mecanismo puede funcionar cuando se hace correctamente, pero en estos dos ejemplos, hacerlo mal puede ser desastroso.

    
respondido por el user79537 06.07.2015 - 17:45
fuente
2

Preferiría la autenticación basada en sesión cada vez. Una cookie no es una buena opción.

Como dijo @HexTitan, tampoco soy un fanático de la autenticación de cookies. Es fácil (hasta cierto punto) romper su seguridad. No es tan difícil forzar una cookie hasta que revele algún secreto.

Por otro lado, debe asegurarse de que sus sesiones tengan suficiente entropía. Si no lo hacen, cualquier atacante puede iniciar múltiples conexiones a su servidor, obtener el ID de sesión y ver cómo se correlacionan. Tener una entropía deficiente puede llevar a la predicción de la sesión.

Fuera del punto de vista de seguridad, puede almacenar muchos más datos en una sesión que en una cookie. También reducirá el tráfico en su servidor, ya que cada solicitud devolverá la cookie, y si su página tiene 135 imágenes, 10 scripts y 5 hojas de estilo css, la cookie se enviará 150 veces solo para la página de inicio.

Si el espacio de almacenamiento es una preocupación, puede descomprimir los datos de la sesión y disminuir los requisitos de almacenamiento. Tener una vida de sesión corta (~ 2h) también ayudará. Por ejemplo, PHP generalmente limpia las sesiones caducadas cada dos horas.

    
respondido por el ThoriumBR 08.07.2015 - 21:00
fuente
0

Creo que esta falla para conectarse a la sesión del usuario se puede superar al incluir la información del Socket TCP como una variable durante la creación de la cookie. pero, como una cookie es solo un par clave / valor, todo depende de la implementación específica en el servidor.

    
respondido por el JOW 06.07.2015 - 17:21
fuente

Lea otras preguntas en las etiquetas