Estás comparando naranjas y manzanas aquí, o más exactamente, ladrillos y casas. Lo que identifica una conversación es, por definición, una sesión. Parada completa Pero la sesión se puede implementar de varias maneras:
- datos del lado del servidor y un ID de sesión almacenados en una cookie (la forma más común en la actualidad)
- los datos del lado del servidor y un ID de sesión transportados como un parámetro de URL (solía ser común cuando los usuarios solían rechazar las cookies)
- datos almacenados en una cookie (limitado a 4k): utiliza menos recursos del servidor
- quizás otros ...
No todos los marcos permiten todas las implementaciones de sesión.
De vuelta a su pregunta, desde un punto de vista de seguridad, se espera que los datos que no abandonan el servidor sean más difíciles de manipular, porque es trivial crear una cookie personalizada a través de cualquier biblioteca de cliente HTTP. Por lo tanto, al menos debe firmar la cookie y controlar la firma en cada paso, y si no desea filtrar datos internos de la aplicación, también debe cifrar el contenido de la cookie. Esto, y la limitación añadida de 4k para un tamaño de cookie, es suficiente para explicar por qué los datos de la sesión generalmente se guardan en el lado del servidor y solo se pasa una identificación en una cookie.
TL / DR: a menos que tenga una buena razón para no hacerlo, mi consejo sería seguir el uso común y almacenar el ID de usuario en una sesión del lado del servidor: esa es probablemente la forma predeterminada para su marco ... .
Respuesta detallada:
¿Cuál es la diferencia entre almacenar en uno frente a otro para el propósito de autenticación?
No hay diferencia en un punto de vista funcional porque ambas son implementaciones diferentes de una sesión
¿Cuál es más seguro? ¿Por qué?
El uso de una sesión es más seguro porque se basará en un marco o biblioteca muy probado. La sesión del lado del servidor es más sólida porque las sesiones de cookies se basan en claves adicionales para la firma y / o el cifrado, y la administración de claves es un punto adicional a considerar en un punto de vista de seguridad
¿Qué se recomienda?
Definitivamente sesión, porque es proporcionada por su marco o biblioteca, y la mayoría de los problemas de seguridad provienen de la implementación. Esa es la razón por la que las mejores prácticas de seguridad recomiendan no enrollar las suyas
¿A qué debo prestar atención cuando lo hago?
No puede confiar en lo que no controla, por lo que no puede esperar que una cookie no haya sido manipulada por el lado del cliente. Por lo tanto, debe firmar la cookie en el nivel de la aplicación con una clave segura y segura. La identificación de usuario interna normalmente no es relevante para el cliente, por lo que debe cifrarla aún en el nivel de la aplicación, y aún con una clave segura y administrada de forma segura. Debe agregar controles adicionales, aún en el nivel de la aplicación para asegurarse de que la cookie (incluso firmada y encriptada) no haya sido espiada desde una sesión anterior legítima, por lo que debe al menos almacenar el ID de sesión dentro de su cookie firmada específica. Y puede haber otros posibles problemas que no haya pensado ...