Aprendí que para la autenticación basada en sesiones, la identificación de la sesión normalmente se almacena en la cookie del navegador y se enviará de vuelta al servidor en cada solicitud.
Y supongo que hay varias vías para enviar ID de sesión (cookies, encabezados, cuerpos de solicitud, URL, etc.) Entonces, ¿cuáles son las implicaciones o compensaciones para almacenar ID de sesión en cookies o encabezados HTTP o cuerpos de solicitud o incluso URL?
Suponiendo que estamos hablando de una aplicación web común, el servidor puede simplemente configurar una cookie, que es un proceso muy transparente: su código de interfaz no necesita leer este token al autenticarse, almacenarlo localmente y reenviar a cada solicitud que lo necesita manualmente. Todas las cosas que podrían salir mal. El servidor lo configurará y el navegador lo devolverá como parte de los encabezados para todas sus solicitudes posteriores.
Hasta hace mucho tiempo, esto también era un problema, con los ataques csrf que tenían que mitigarse de alguna manera, para asegurarse de que cualquier solicitud enviada con la identificación de sesión adecuada fuera realmente legítima, y no el resultado de un sitio aleatorio que elabora solicitudes de publicación de manera maliciosa. . Con la samesite de mismo sitio, el navegador envía cookies solo después de verificar el origen de la solicitud.
Desde un punto de vista de seguridad, las cookies configuradas con httponly no son accesibles a través de javascript. La alternativa típica de almacenamiento de tokens es el almacenamiento local, pero tan pronto como ocurre una vulnerabilidad xss, ese token puede verse comprometido.
Por lo general, también desea evitar enviar tokens como parte de la cadena de consulta en sus solicitudes. Si bien las direcciones URL no son visibles en una solicitud https normal en tránsito, el servidor web de su elección puede registrar esas solicitudes, en un archivo, que contendrá información confidencial que no debería estar allí. El usuario puede compartirlos accidentalmente copiando/pegando la URL también.