Foros del Web » Programando para Internet » PHP »

Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Estas en el tema de Usar o no usar el check "recordar contraseña" o "no cerrar sesion" en el foro de PHP en Foros del Web. Buenas a todos! Estoy estudiando la seguridad del check "recordar contraseña" o "no cerrar sesión", etc... ese check que si lo marcas la propia página ...
  #1 (permalink)  
Antiguo 28/11/2010, 16:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Buenas a todos!

Estoy estudiando la seguridad del check "recordar contraseña" o "no cerrar sesión", etc... ese check que si lo marcas la propia página te recuerda para visitas posteriores.

Realmente lo que hacen estas páginas y en definitiva estos check son guardar SIEMPRE cookies en el navegador del visitante, no conozco otra forma de recordar datos que no sea con cookies. Y al utilizarlas en lugares públicos estás poniendo en riesgo tu cuenta de usuario.

Por lo que planteo la siguiente pregunta.
¿Creéis que son seguros estos check de recordar datos?
  #2 (permalink)  
Antiguo 28/11/2010, 17:02
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Pues si es en un lugar público, como un ciber, claro que sí. Pero en mi caso, los uso en mi PC, por lo cual no hay problema. También, como ejemplo, Firefox recuerda el 99,9% de mis contraseñas en los formularios .

Si quieres poner esos checkboxes, hazlo, pero infórmale al usuario del riesgo que corre al usarlos en un lugar público.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 28/11/2010, 17:54
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por spider_boy Ver Mensaje
Pues si es en un lugar público, como un ciber, claro que sí. Pero en mi caso, los uso en mi PC, por lo cual no hay problema. También, como ejemplo, Firefox recuerda el 99,9% de mis contraseñas en los formularios .

Si quieres poner esos checkboxes, hazlo, pero infórmale al usuario del riesgo que corre al usarlos en un lugar público.
El navegador recuerda tus contraseñas en los formularios porque se lo permites...
y si es así, supongo que el 0.01% que no lo hace será porque has limpiado cookies y/o caché.

Yo creo que depende del tipo de página...
Si lo usas, como dice spider_boy, lo mejor sería avisar de los riegos si está en un pc público.
Pero si te lo puedes ahorrar mejor, además la mayoría de la gente que las almacena borra las cookies por lo que sea y cuando debe ponerla de nuevo la ha olvidado...
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #4 (permalink)  
Antiguo 28/11/2010, 21:07
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por IEKK Ver Mensaje
El navegador recuerda tus contraseñas en los formularios porque se lo permites...
y si es así, supongo que el 0.01% que no lo hace será porque has limpiado cookies y/o caché.

Yo creo que depende del tipo de página...
Si lo usas, como dice spider_boy, lo mejor sería avisar de los riegos si está en un pc público.
Pero si te lo puedes ahorrar mejor, además la mayoría de la gente que las almacena borra las cookies por lo que sea y cuando debe ponerla de nuevo la ha olvidado...
Si, yo se lo permito... quizá fue un mal ejemplo o simplemente no aplicaba al tema principal ... my mistake. .
PD : Olviden lo de Firefox. Ni siquiera se porque lo mencioné :P.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 28/11/2010, 21:11
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Lo que podes hacer es una cookie que guarde un id, y si esa cookie esta en el ekipo busca en la BD la ID de la cookie y si consige lo recuerda,

LO QUE NO TENES QUE HACER ES QUE GUARDA LA pass en la cookie.

Con lo de firefox no se recomienda usarlo ya que con un stealer te roban todas las pass, encambio con el metodo recodar contraseña en la web es mas seguro
  #6 (permalink)  
Antiguo 29/11/2010, 00:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por marcofbb Ver Mensaje
LO QUE NO TENES QUE HACER ES QUE GUARDA LA pass en la cookie.
exacto!!

el éxito de implementar estas famosas cookies es verdaderamente sencillo, solo le indica al sistema que el usuario del navegador actual ha solicitado recordarse le sus datos...

aquí es donde implica la seguridad, ¿como identificas a tu cliente, y como le haces para obtener sus datos a través de dichas cookies?

aplicar el método de los ckeckbox no representa ningún agujero de seguridad por si mismo, es como siempre responsabilidad del programador saber hacer las cosas bien!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 29/11/2010, 00:49
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Buenas,

Gracias por vuestros comentarios.

Yo era de los que opinaba como vosotros marcofbb y pateketrueke, en lugar de poner la contraseña en una cookie, simplemente poner un ID como decís, y este ID debería cumplir unos mínimos, ej. no podría ser el ID del usuario, ya que solo modificando esta cookie tendrías acceso a otro usuario, no? debería ser un número aleatorio (token) encriptado en md5 x ej.

¿Pero esto no evita, que tan solo con esa cookie, pueda ser capturada por un 3º y pueda logearse haciéndose pasar por este usuario no?

Gracias de antemano
  #8 (permalink)  
Antiguo 29/11/2010, 06:00
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por pateketrueke Ver Mensaje
exacto!!

el éxito de implementar estas famosas cookies es verdaderamente sencillo, solo le indica al sistema que el usuario del navegador actual ha solicitado recordarse le sus datos...

aquí es donde implica la seguridad, ¿como identificas a tu cliente, y como le haces para obtener sus datos a través de dichas cookies?

aplicar el método de los ckeckbox no representa ningún agujero de seguridad por si mismo, es como siempre responsabilidad del programador saber hacer las cosas bien!!
Entonces ante mi ignorancia, ilústrenme
Lo que he visto hacer es guardar en una cookie el usuario y/o contraseña.
Esos datos aparecían en los campos del login y el usuario sólo tenía que darle al botón aceptar. Por eso nunca vi este método muy eficaz...

Lo que no entiendo:
Si guardamos un id y lo comparamos en la BD para saber si se debe recordar... si el pc fuese público otra persona igualmente podría acceder ¿No?

Si me pudieran explicar la idea en sí... (nada d code, sólo idea)
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #9 (permalink)  
Antiguo 29/11/2010, 10:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Como dice pateketrueke, lo mejor es generar un hash aleatorio, no es necesario que lo encriptes, solo que sea un hash único, por ejemplo en tu BDD vas a tener 4 campos (ejemplo):

ID, Usuario, Password, Hash

En el hash siempre checa que sea único, y aleatorio, y en la cookie guardas (cifrado) el ID con el Hash por ejemplo y cuando el usuario regrese a tu pagina web compruebas estos dos datos, los decifras o desencriptas y comparas que tanto el ID como el Hash sean iguales, de esa forma le permites el acceso, si no borras la cookie y le presentas el form de login al usuario.

Saludos.
  #10 (permalink)  
Antiguo 29/11/2010, 12:12
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por GatorV Ver Mensaje
Como dice pateketrueke, lo mejor es generar un hash aleatorio, no es necesario que lo encriptes, solo que sea un hash único, por ejemplo en tu BDD vas a tener 4 campos (ejemplo):

ID, Usuario, Password, Hash

En el hash siempre checa que sea único, y aleatorio, y en la cookie guardas (cifrado) el ID con el Hash por ejemplo y cuando el usuario regrese a tu pagina web compruebas estos dos datos, los decifras o desencriptas y comparas que tanto el ID como el Hash sean iguales, de esa forma le permites el acceso, si no borras la cookie y le presentas el form de login al usuario.

Saludos.
GRACIAS
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #11 (permalink)  
Antiguo 29/11/2010, 12:38
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por GatorV Ver Mensaje
Como dice pateketrueke, lo mejor es generar un hash aleatorio, no es necesario que lo encriptes, solo que sea un hash único, por ejemplo en tu BDD vas a tener 4 campos (ejemplo):

ID, Usuario, Password, Hash

En el hash siempre checa que sea único, y aleatorio, y en la cookie guardas (cifrado) el ID con el Hash por ejemplo y cuando el usuario regrese a tu pagina web compruebas estos dos datos, los decifras o desencriptas y comparas que tanto el ID como el Hash sean iguales, de esa forma le permites el acceso, si no borras la cookie y le presentas el form de login al usuario.

Saludos.
5 preguntas para rematar el tema

1 - Un hash bueno podría ser este de aquí, no?

$HASH = md5(uniqid(rand(), true));

2 - Este hash lo guardas sólo una vez junto con los datos del usuario en la BD y no cambia nunca, me refiero que no cambia en cada inicio de sesion ni en cada recarga de la página?

3 - El hash anterior está en MD5 (es buena encriptación o debe ser reversible?), supuestamente guardado en una cookie del usuario, x ej. con el nombre "recordarme". Solo tienes que comparar el valor de esta cookie con el valor que hay en la BD para cargar la sesión del usuario, no?

4 - Si un usuario es espabilado y consigue la cookie "recordarme" de otro usuario, no hay nada que hacer, este usuario cuando acceda a la web automáticamente iniciará sesión con la cuenta del usuario, no?

5 - Podrías poner un ejemplo para acabarlo de ver?

Muchas gracias de antemano!
  #12 (permalink)  
Antiguo 29/11/2010, 15:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Yo creo para más seguridad lo que generaría serian 2 partes, un hash en la tabla, y otro hash para la cookie, y así al usuario al ingresar compruebas que las 2 partes coincidan aplicando algún algoritmo, así si alguien llega a cambiar la cookie no podría ingresar ya que el hash no sería el mismo.

No se puede hacer mucho si te roban la cookie ya que esa es la idea de la cookie que te permita el entrar al sistema, y si alguien logra obtener la cookie pues no puedes discriminar si sería o no el usuario real.

Saludos.

PD. MD5 NO es un algoritmo de encriptación, es de hasheo, y no, no puede ser reversible, simplemente genera un hash de una cadena/archivo.

Saludos.
  #13 (permalink)  
Antiguo 29/11/2010, 15:24
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

el id del usuario no podria ser ya que podes crear una cookie o falsificar una ya creada

tiene que ser un numero aleatorio que se guarde en tu pc y en la base de datos

ejemplo:

Base de datos.

Nombre | iden | pass
marcofbb | aoskdapjdaklsdjalsid | blabla

en la coiokie si guarda aoskdapjdaklsdjalsid

cada vez que se logea el usuario cambia aoskdapjdaklsdjalsid por otra cadena aletoria
  #14 (permalink)  
Antiguo 30/11/2010, 01:21
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Usar o no usar el check "recordar contraseña" o "no cerrar sesion"

Cita:
Iniciado por marcofbb Ver Mensaje
el id del usuario no podria ser ya que podes crear una cookie o falsificar una ya creada

tiene que ser un numero aleatorio que se guarde en tu pc y en la base de datos

ejemplo:

Base de datos.

Nombre | iden | pass
marcofbb | aoskdapjdaklsdjalsid | blabla

en la coiokie si guarda aoskdapjdaklsdjalsid

cada vez que se logea el usuario cambia aoskdapjdaklsdjalsid por otra cadena aletoria
Si cada vez que se logea el usuario cambias el hash de la cookie y el de la BD, podrías encontrarte con el caso que el usuario tiene dos PC's el de casa y el de la oficina, en las dos tiene puesta recordar contraseña, pero si se logea desde uno y marca recordar contraseña, el hash de la base de datos cambiará.
No tendrá ningún problema de entrar automáticamente desde la oficina por ejemplo, pero cuando vaya entrar desde casa, a pesar de tener los datos guardados en la cookie le pedirá nuevamente usuario y contraseña porque los hash de la cookie con la BD no coincidirán.

Haciéndolo así no lo veo muy útil

Estudiaré lo que comentas GatorV
  #15 (permalink)  
Antiguo 30/11/2010, 14:44
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
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!

Etiquetas: cerrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:20.