Ver Mensaje Individual
  #15 (permalink)  
Antiguo 30/11/2010, 14:44
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

He intentado hacer el pseudo-código, a ver que os parece:

Preliminar...
PALABRASECRETA="s3cr3t"
((user_id + username) en MD5 + palabrasecreta) en MD5, el resultado en un campo llamado HASH en la BD

El usuario visita la web.

>> Se crea un token de sesión mediante

Código de la cabecera de la web:

$token = md5(uniqid(rand(), true));
$_SESSION['TokenSesion'] = $token;


El usuario se logea y marca la casilla "No cerrar sesión"

Código HTML:
Ver original
  1. <form method="post" action="/libs/login.php">
  2.     <ul class="loginBox">
  3.         <li><input id="user" type="text" name="user" tabindex="1" onblur="if(this.value=='') this.value='Usuario';" onfocus="if(this.value=='Usuario') this.value='';" value="Usuario"/></li>
  4.         <li><input id="passw1" type="text" name="pass1" tabindex="2" style="display: inline;" value="Contraseña" onfocus="this.style.display = 'none'; this.form.pass2.style.display = 'inline'; this.form.pass2.focus();" /></li>
  5.         <li><input id="passw2" type="password" name="pass2" tabindex="2" style="display: none;" onblur="if(this.value == '') {this.style.display = 'none'; this.form.pass1.style.display = 'inline';}" /></li>
  6.         <input type="hidden" name="token" value="<?php echo $token; ?>">
  7.     <li>
  8.         <span class="entrar">
  9.         <input name="entrar" value="Entrar" type="submit"/></span></li>
  10.         <li>
  11.         <ul id="passwordBtn">
  12.             <li><input type="checkbox" id="recordar" tabindex="3" name="recordar" /><label for="recordar">No cerrar sesión&nbsp;&nbsp;</label></li>
  13.             <br/>
  14.             <li><a href="/registro/recuperar_pass.php">¿Olvidaste tu contraseña?</a></li>
  15.         </ul>
  16.         </li>
  17.     </ul>
  18. </form>

>> Se verifica que los datos introducidos por el usuario (user y pass sean correctos y que el token que está en un campo hidden coincide con la sesion del servidor)

>> Si todo es correcto, se crea esta cookie llamada "recuerdame"

>> La cookie "recuerdame" contiene el USER_ID + USERNAME encriptado en md5


El usuario vuelve a visitar la web

>> Se comprueba que exista la cookie "recuerdame"

>> Se lee los datos de la cookie y se le concatena al valor de la cookie la PALABRASECRETA, se encripta todo en MD5 y se compara con el campo de la base de datos.

>> Si coincide este valor el usuario está autenticado.

¿Es correcto?

Muchas gracias de antemano!