Tengo una situación donde un script recibe algunos datos del usuario, luego devuelve un hash. Durante un cierto período de tiempo, por ejemplo, X segundos, el hash es válido y cuando se devuelve al script junto con los datos originales y dentro del marco de tiempo especificado, se permite el acceso a ciertas funciones.Causa de hash para caducar después de un cierto tiempo
Estoy haciendo esto incluyendo una marca de tiempo en el hash. Puedo obtener una marca de tiempo llamando a decir floor(time()/X);
pero esto, en lugar de caducar después de X segundos, caduca en cualquier lugar entre 1 y X segundos. Tengo alrededor de esta ahorrando time()%X
y añadiendo al hash, a continuación, cuando lo reciba de vuelta, analizarlo y restarlo de time()
, por lo que mi función hash se ve un poco como esto:
function hash($oldhash='') {
static $hash;
if(!$hash) {
$time = time();
$expoff = explode('!', $oldhash, 2);
$expoff = $expoff[0] ? $expoff[0] : $time%$this->_cfg['hashexpire'];
$hash = $expoff.'!'.sha1($this->_data.floor(($time-$expoff)/$this->_cfg['hashexpire']));
}
return $hash;
}
Theres también una sal allí pero la retiré para mayor claridad.
Esto funciona, pero creo que hay una forma mejor de lograr lo que busco aquí y me pregunto si tiene alguna sugerencia.
¡Tu ejemplo actualizado parecía muy atractivo! Lamentablemente, no, no es lo que necesito. Pensaré en el primer ejemplo un poco más, quizás esto combinado con un vencimiento encriptado como Mel sugirió ... Gracias por el enlace sobre HMAC, tendré que leer un poco allí. – tjm