Saltar al contenido

¿Cuál es normalmente la fecha de caducidad de una cookie de sesión?

Bienvenido a nuestro sitio, aquí encontrarás la solucíon a lo que andabas buscando.

Solución:

Supongo que es la sesión de navegación, así que si no establezco una fecha de vencimiento, esta se usará como la predeterminada, ¿verdad?

Si. A menos que tenga una necesidad particular de que las sesiones sobrevivan al reinicio del navegador, omita el expires para que la cookie sea solo de sesión del navegador y no se conserve en el disco.

¿Depende de cuánto tiempo quiero que los usuarios permanezcan conectados antes de cerrar la sesión automáticamente?

Eso se rige por el tiempo de caducidad de la sesión real, que debe implementarse solo en el lado del servidor. Si usa un expires tiempo que generalmente querría que sea al menos tan largo como el tiempo de espera del lado del servidor, pero no debe confiar en que el navegador respete eso expires como su método para asegurarse de que las sesiones antiguas sean inalcanzables.

Generalmente, solo de sesión (no-expires) las cookies se utilizan para el seguimiento de la sesión, y el tiempo de espera se agota en el lado del servidor. Si se realiza una solicitud con una cookie no reconocida o faltante, es probable que la sesión haya expirado en el lado del servidor, el navegador se haya cerrado en el lado del cliente, o ambos, y debe indicarle al usuario que inicie una nueva sesión.

Por lo general, habrá una herramienta de administración de sesiones incluida en cualquier marco web en el lado del servidor que resolverá esto por usted enviando el Set-Cookie encabezados en una respuesta HTTP (ya sea la página HTML inicial o una respuesta XMLHttpRequest). Mientras tu pudo Reimplementar la gestión de la sesión usted mismo utilizando solo JavaScript, parámetros pasados ​​y, digamos, localStorage como alternativa a las cookies, no parece haber mucho que ganar reinventando esa rueda.

Mi recomendación sería: “No cree la cookie de autenticación con JavaScript”. Una cookie que identifica una sesión autenticada debe marcarse con la marca HttpOnly para ayudar a mitigar los ataques XSS, por lo que debe ser creada por el servidor y enviada con la respuesta, no creada en el cliente.

Dejando de lado ese pequeño consejo, su suposición es en su mayoría correcta. Si no hay una caducidad establecida en la cookie, entonces es una cookie de sesión y permanecerá activa mientras el navegador esté abierto. y el ID de sesión es válido. Si el servidor expira las sesiones autenticadas periódicamente, la cookie ya no se adjuntará a una sesión en el servidor y, por lo tanto, será esencialmente null.

A su segunda pregunta, si desea especificar una cantidad máxima de tiempo que un usuario está conectado antes de tener que volver a autenticarse, generalmente se hace con un vencimiento continuo, donde el tiempo de vencimiento se actualiza con cada solicitud para que sea de x minutos a partir de ahora. , por lo que las sesiones de usuarios activos no caducan a la fuerza, solo sesiones inactivas en las que un usuario no ha realizado una nueva solicitud en los últimos x minutos. La forma más segura de hacer esto es vincular el valor de la cookie a una sesión en el servidor que expira a tiempo y que el usuario no puede interferir. La caducidad de la cookie no es suficiente, ya que puede ser modificada por el cliente. Si necesita almacenar la expiración de una sesión en el lado del cliente, debe estar cifrada en el valor de la cookie, por lo que nuevamente debe crearse en el lado del servidor, no mediante JavaScript, porque el servidor debe ser el único lugar donde se puede descifrar el valor. para que sea seguro.

Y, por último, a su tercera pregunta, ¿cuál es la cantidad de tiempo adecuada antes de finalizar una sesión? Depende enteramente de su aplicación. Las aplicaciones financieras suelen tener tiempos de espera muy breves de cinco o diez minutos. Muchas aplicaciones tienen un tiempo predeterminado más tradicional de 20 o 30 minutos. Si el flujo de trabajo de su aplicación requiere una gran cantidad de tiempo en una página sin actualizar, incluso más tiempo puede ser necesario. No sé si es muy importante en cualquier caso, a menos que su aplicación tenga necesidades de seguridad específicas.

No soy un desarrollador web, por lo que esto podría estar mal, pero esperaría que pudieras usar el Set-Cookie: encabezado en la respuesta HTTP a la consulta AJAX para configurar la cookie de sesión.

No debería necesitar pasar el ID de sesión dentro de la respuesta AJAX y luego usar Javascript para configurar esa cookie. El PHP estándar session_*() Las funciones deben manejar la configuración correcta del tiempo de caducidad.


En una nota de seguridad, HTTPOnly, Secure y SSL. Deberías estar haciendo todo esto.

También debería estar caducando sesiones en el servidor tanto cuando el usuario cierra sesión como después de un cierto período de inactividad por parte del usuario. El período que elija es un compromiso entre seguridad y usabilidad. El valor predeterminado en PHP es 1440 minutos (24 horas).

Si estás de acuerdo, tienes el poder dejar una noticia acerca de qué le añadirías a este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *