es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Módulo de expresión cookie-session no incluyendo SameSite y Secure en Response Set-Cookie.

Visto esto antes aquí, pero no he visto una solución real. El módulo express-session OR cookie-session del servidor Node Express envía una cookie de sesión, pero como no había codificado los atributos SameSite/Secure, no están ahí y el cliente en un POST posterior al servidor falla como No Iniciado de sesión, con un 403. Como se esperaba.

En primer lugar, mi cliente inicia sesión correctamente en el servidor:
Imagen

Aquí está el código correspondiente del servidor, utilizando express-session:
Imagen

Imagen

Lo cual generó una cookie de sesión a través de Set-Cookie. OBSERVE que los atributos SameSite=’none’ y Secure=true no se incluyeron y, como se esperaba, no están ahí.

Imagen

Imagen

Ahora, he agregado los atributos sameSite y secure al objeto de sesión y he vuelto a ejecutar el inicio de sesión.

Imagen

Veamos los encabezados de respuesta devueltos por este inicio de sesión, con los atributos agregados al objeto de sesión. ¡No solo no vemos los atributos en el encabezado de respuesta Set-Cookie, sino que tampoco se devuelve ninguna cookie!

Imagen

Parece que cuando se agregan estos 2 atributos al objeto de sesión en express-session o cookie-session, el resultado es que no se devuelve ninguna cookie. Esto significa que un POST posterior al servidor devolverá un 403, Usuario no iniciado de sesión.

Realmente estoy desconcertado. ¡He invertido mucho tiempo en esto! Gracias por las ideas y la ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema descrito en esta publicación está relacionado con el uso de los atributos SameSite y Secure en una cookie de sesión. Cuando se agregan estos atributos al objeto de sesión tanto en express-session como en cookie-session, el resultado es que no se devuelve ninguna cookie en las cabeceras de respuesta. Esto puede provocar que una posterior solicitud POST al servidor devuelva un error 403, Usuario no conectado.

    La causa del problema no está del todo clara, pero podría estar relacionada con el hecho de que los atributos SameSite y Secure están diseñados para mejorar la seguridad y prevenir ataques de script entre sitios, por lo que requieren que la cookie se envíe a través de HTTPS. También podría estar relacionado con problemas de compatibilidad del navegador.

    Para resolver el problema, se podrían seguir los siguientes pasos:

    1. Verificar que el servidor se esté ejecutando a través de HTTPS, ya que los atributos SameSite y Secure lo requieren.
    2. Comprobar la compatibilidad del navegador con los atributos SameSite y Secure, y verificar que el navegador que se esté utilizando los admita.
    3. Intentar establecer estos atributos directamente en la cabecera de respuesta Set-Cookie, en lugar de usar el objeto de sesión.
    4. Considerar el uso de un enfoque diferente para la gestión de sesiones, como JSON Web Tokens (JWT), que no requieren cookies de sesión.

    En general, es importante tener en cuenta que agregar características de seguridad a las cookies de sesión puede tener consecuencias no deseadas, y es necesario realizar pruebas y depuración cuidadosas para asegurarse de que la aplicación siga funcionando correctamente.

Comments are closed.