Necesitas memoria . Si el servidor no recuerda quiénes son los clientes y cuándo se autenticaron por última vez, y en su lugar confía en los clientes para mantenerse al día, entonces los clientes están en posición de engañar al servidor. Lo que usted describe (guardar y luego restablecer la cookie) se llama, en general, un ataque de repetición . Para ver las cosas conceptualmente, con la caducidad de las cookies, está esperando que el atacante potencial sea lo suficientemente elegante como para olvidar algunos datos confidenciales, donde no olvidarlo implicaría cierta ganancia para el atacante.
Esto conduce a dos formas principales de evitar el problema:
-
Haga que el servidor recuerde la hora de la última autenticación de cada usuario y haga cumplir la caducidad, independientemente de si el navegador del cliente expiró la cookie o no.
-
Codifique en la cookie la fecha de caducidad, para que el servidor pueda verificarla. Esto está descargando la memoria del servidor en los clientes; para hacerlo seguro (debido a que el cliente podría modificar sus cookies para prolongar la duración de su sesión), entonces necesita algo de criptografía, es decir, agregar un MAC computado con una clave secreta que el servidor conoce pero no le dice a nadie (en particular, los clientes no lo saben).
Dado que la criptografía está llena de trampas letales, se recomienda que aplique el primer tipo de solución. Esto es principalmente una cuestión de agregar una columna en su tabla de usuarios, en su base de datos (supongo que tiene una base de datos en el servidor); esto será barato.
La caducidad de las cookies no es confiable, incluso en contextos no hostiles, porque algunos usuarios no configuran correctamente el reloj de su computadora. Algunos están apagados por varias horas (por ejemplo, están en la zona horaria incorrecta), y algunos están apagados por varios años (simplemente no les importa).