Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/06/2010, 09:15
alfonso23
 
Fecha de Ingreso: diciembre-2009
Mensajes: 18
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Seguridad con cookies

He encontrado una solución (creo) para evitar que alguien pueda usar una cookie que se obtenga:

En primer lugar, obtengo la hora actual con time.time() y le sumo 180 segundos (lo llamaremos t).

Ahora obtengo el valor hash sha1 de concatenar el usuario y la clave de la persona que se autentica (lo llamaremos hu)

Hago el hash sha1 resultante de crear la cadena t:hu (se llamará hf)

Lo que mando como sid es la cadena t:hf.

Cuando llega la cookie se hacen las siguientes comprobaciones:

Se comprueba que el tiempo actual es menor que el tiempo guardado en la cookie antes del ':'

Se comprueba que hf es correcto:

Para cada par de valores (usuario,clave) de la tabla de usuarios, concatenamos ambos campos y obtenemos el valor sha1, hu'

Comprobamos que el valor sha1 de t:hu' sea igual a hf. En ese caso, la cookie se da por válida.

Consideraciones:

Un atacante no puede modificar el campo de tiempo porque hf no coincidiría y para calcular hf necesita un hu generado a partir de dos datos de usuario y clave que no conoce (al buscar un par en la tabla de la bd no se encontraría ninguno).

Como consucuencia de que no se puede modificar el campo del tiempo, las cookies sólo valdrían durante 180 segundos (además también se modifica el campo expires a 3 minutos más tarde de la hora actual)

El único problema que yo veo es que mientras no acaben esos 3 minutos, alguien que obtenga la cookie puede acceder pero se usa HTTPS.

Un saludo y muchas gracias por tu atención