Foros del Web » Programando para Internet » PHP »

¿Cual es un método seguro de guardar login en cookie?

Estas en el tema de ¿Cual es un método seguro de guardar login en cookie? en el foro de PHP en Foros del Web. Me gustaría guardar el login de mis usuarios en una cookie, como habitualmente se hace. PERO! es sabido lo inseguro que es, primeramente porque es ...
  #1 (permalink)  
Antiguo 17/09/2008, 11:10
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
¿Cual es un método seguro de guardar login en cookie?

Me gustaría guardar el login de mis usuarios en una cookie, como habitualmente se hace.

PERO! es sabido lo inseguro que es, primeramente porque es muy sencillo mirar una contraseña plana en una cookie.

He visto sitios webs donde guardan una especie de código en vez de la contraseña plana, pero no estoy muy seguro de como se implemente esta técnica.

¿alguien sabe?
__________________
Blog | Tecnosquad
  #2 (permalink)  
Antiguo 17/09/2008, 11:13
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

de por si las cookies no son muy seguras que digamos
pero la podes encriptar y pasarle por parametro q sea segura
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 17/09/2008, 11:28
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Yo generalmente guardo la contraseña en la cookie, y tengo una funcion donde el string que le pase se trasnforma en un string encriptado, no solo con md5, pasa por varias funciones, md5, sha1, base64 (se que es descodificable pero igualmente añade un poco de complejidad), y uso cosas como pasar los caracteres a su numero ascii y despues el numero a binario o hexadecimal, varios procesos seguidos de ese tipo hace practicamente descodificable la contraseña (a mi punto de vista), otra opcion es crear un numero aleatorio por usuario (aleatorio, no se usa la id por que alguien podria descubrir como funciona ese metodo, en la cookie pone el numero 1, que significaria ID = 1, osea que podria entrar como administrador (si damos por hecho que el administrador fue el primer usuario y tiene id = 1), lo mejor es un numero aleatorio, que se compruebe que no coincide con el de ningun usuario, y se ponga ese numero en la cookie, y entonces se identifica al usuario por un numero que aparentemente no sirve para nada para el que intente ver la cookie.

Un saludo
  #4 (permalink)  
Antiguo 17/09/2008, 11:41
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

En realidad usar el algoritmo MD5 ya convierten a una cadena cualquiera en indescifrable, pero da igual no lo necesitas.

Las cookies son 100 % inseguras. Un usuario se puede crear una cookie personalizada con la cookie de otra persona. Aunque no sepa el pass. Coges el pass encriptado guardado en una cookie y te creas otra cookie personalizada. Imaginaos que os logueais en un ciber y os crea una cookie en el ordenador de ciber con vuestro pass encriptado. Otro usuario puede llegar coger la cookie que hemos dejado, llevarserla a su ordenador y usarla. El usuario nunca llegara averiguar el pass del otro usuario, pero puede acceder a su cuenta igualmente. No se si me explico bien. Hay por ahi unos tutoriales y debates que explican porque NUNCA se debe usar una cookie para guardar el pass o una sesion de larga duracion (mas de un día).
  #5 (permalink)  
Antiguo 17/09/2008, 12:33
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

En eso tienes razón, pero bueno ya es más complicado, no tendrías un objetivo en sí (hablando desde la mente del hacker), seria meterte en un PC de el ciber mirar las cookies a ver cuál te interesa, pero igualmente puede que sea complicado o no, pero está claro que podría fastidiar a algún usuario de tu pagina web, y más peligroso si la web trata algo sobre negocios donde se mueve dinero, por eso en páginas de ese estilo solo se usan sesiones, otra forma que veo para prolongar una sesión algo más de lo que pueden durar, es guardar la sesión junto con la ip en una base de datos, así podría durar algo mas y que no se acabe al cerrar el navegador.

Un saludo
  #6 (permalink)  
Antiguo 17/09/2008, 12:43
Avatar de don_fransisco  
Fecha de Ingreso: junio-2004
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Y para que guardan los password en una cookie, si las cookies no son seguras ya que se guardan en el explorador del cliente

lo que tienen que hacer es guardar el IDUSER en una $_SESSION y propagar la sesion via URL colocando el identificador unico de sesión en los enlaces despues consultan a la base de datos si ese IDUSER existe, manejar en una cookie un password es algo inseguro, las password son para guardarlas en una base de datos.
__________________
www.webeconomicas.cl
  #7 (permalink)  
Antiguo 17/09/2008, 13:32
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

El password ya esta guardado en la base de datos, es lo que se usa para comprobar que usuario es, y lo de propagar por url como puedes ver casi nadie lo usa es un metodo muy engorroso para mi gusto.
  #8 (permalink)  
Antiguo 17/09/2008, 14:00
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

El tema de la sesión (lo que es logeo y se que mantenga temporalmente mientras el browser está andando) lo tengo OK.

Mi inquietud es como hacer el guardado del login en una cookie se lo menos inseguro posible.
Siempre existe la posibilidad de robarse las cookies del cliente, pero imagino que se pueden dificultar un poco las cosas al atacante ¿no?.

Por ejemplo, tengo este sitio hace un tiempo guardado http://www.devshed.com/c/a/PHP/Creat...-Login-Script/ donde explican como hacer un login seguro, ¡pero! aun no entiendo bien la técnica, además que viendo el código, en algunas partes comprueba la ip (lo cual es sabido que es ineficaz con usuarios de ip dinámica).

Por eso tengo tantas dudas.

PD: no soy principiante, se perfectamente la diferencia entre $_COOKIE y $_SESSION
__________________
Blog | Tecnosquad
  #9 (permalink)  
Antiguo 17/09/2008, 14:04
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: ¿Cual es un método seguro de guardar login en cookie?

Hola ArrauKano,

Lo que yo hago es lo siguiente, guardo 4 cookies en el cliente, uno es el Auth Session ID (un hashtoken que guardo para mis sesiones), el UserId tal cual de la DB, Session name, el nombre de la aplicación actual (uso muchos sistemas multi aplicación), y Password (uso un algoritmo propio para encryptar y desencryptar el password).

Con esas 4 cookies cuando el usuario regresa compruebo si el session ID es valido, luego checo que el usuario exista en la DB, posteriormente desencripto el password (usando un salt que esta guardando en el server junto con el session id y session name) y comparo si son iguales, si lo son le permito el paso, en caso contrario no le doy acceso y tiene que volver a entrar a la aplicacion.

Saludos.
  #10 (permalink)  
Antiguo 17/09/2008, 14:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

mmm... naturalmente es poco seguro usar COOKIE's ... por esa simple y sencilla razón, no conozco un modo seguro de guardar datos tan vitales en una cookie ... de hecho, yo no lo haría!!!

lo mejor, es usar sesiones... y solo usar cookies para datos poco importantes y volátiles, no el login....

(se nota que conoces la diferencias)


--


NOTA: yo he desarrollado un sistema de sesión que funciona aún si la IP cambia (como comentaste) y solo necesita de una simple cookie que almacena un ID de tal sesión solo por si el IP llega a cambiar, mientras sea al mismo... la sesión internamente verifica la cookie, si existe... y contiene un ID valido... identifica de quien era la sesión y la restaura... etc, etc....

aquí te coloco el POST : http://www.forosdelweb.com/f18/neces...eneral-623276/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 17/09/2008, 14:36
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Una seguridad añadida que se me ha ocurrido para lo que dice Tokara de robar la cookie y ponerla en otro PC, seria guardar el nombre del ordenador que visita la pagina en la cookie, y comprobar si el nombre de la cookie es igual al del ordenador, en caso de que no fuese eliminaria la cookie y le llevaria al form de login, lo cual ya impediria completamente que pasase lo que comenta Tokara, al menos que el usuario se adelantase y cambiase el nombre de su ordenador, pero lo veo imposible si tiene una buena encriptacion el nombre, que les parece ese sistema? con una buena encriptacion y ese sistema, que vulneravilidad podria tener una cookie? y en todo caso si se quiere mas seguridad se podria añadir el sistema de ip que han comentado anteriormente.
  #12 (permalink)  
Antiguo 17/09/2008, 16:00
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Suena interesante logear "el nombre del pc".

Salvo por un detalle. ¿cual nombre de pc?, porque lo único que veo para identificar un computador/terminal es su ip. Y volvemos a caer en el tema de la ip dinámica.

Yo guardaría en la DB "la mitad" de una clave, en la cookie la otra mitad y comprobar que hacen juego o algo así, pero aun estoy confundido.

Ojo, pienso liberar la aplicación, por lo tanto tampoco sirve "un algoritmo propio para desencriptar", pues bastaría con conocer la aplicación y listo. De lo que estoy entendiendo, rescato que el algoritmo debiera:

1) tener suficiente entropía para que sea seguro, aun conociendo el algoritmo que haga la clave.
2) guardar algún dato que identifique al único usuario, que no sea la ip
3) guardar la mitad de la información en la base de datos y/o sesión y la otra en la cookie.
__________________
Blog | Tecnosquad
  #13 (permalink)  
Antiguo 17/09/2008, 16:58
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Los datos que se guardan en la cookies suelen ser datos que se suelen prolongar mucho en el tiempo y datos de poca importancia o pocos relevantes para la seguridad. El famoso carrito de la compra (ese es el origen de las cookies), guardar tus ultimos movimientos en una web. Solo se guardan los datos de una sesion si el ordenador es de confianza y advirtiendo al usuario. En los foro se usa para recordar a un usuario y evitar que este se vuelva a logear. Avisa al usuario si quiere ser recordado.

Aqui teneis mas info sobre las cookies y sus problemas de seguridad

Wikipedia cookies
  #14 (permalink)  
Antiguo 17/09/2008, 17:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Cada equipo tiene un nombre, aparte de la ip que identifica conexiones a internet, cada equipo tiene su propio nombre, y pensaba que estaba guardado en una de las variables globales de php, pero he estado buscando y creo que solo funciona si el servidor esta instalado en un windows. Asi que habra que seguir con lo de la ip?
  #15 (permalink)  
Antiguo 17/09/2008, 17:48
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

bueno, de partida, guardaré cookie SI Y SOLO SI el usuario clickea un checkbox (como suele hacerse)
__________________
Blog | Tecnosquad
  #16 (permalink)  
Antiguo 17/09/2008, 20:25
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: ¿Cual es un método seguro de guardar login en cookie?

La ventaja de cualquier algoritmo de encriptación es que necesitas la llave, sin la llave por mas que sepas el método es muy complicado obtener el string original, es por eso que si tienes una llave bastante grande haces muy complicado el proceso de obtener el original.

Saludos.
  #17 (permalink)  
Antiguo 29/12/2008, 05:40
Avatar de hawaiian050  
Fecha de Ingreso: junio-2007
Mensajes: 285
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

Hola,

por lo que estube mirando aqui no es nesesario guardar un clave en una session o cookie ??

por otro lado estoy haciendo un login y tengo estas opciones cual seria mas segura ( sin guardar pass ) " no se si la clave en el cookie es nesesario para algo .. "

cual de estos 4 es el mas seguro o comun aplicable .. ?

Código PHP:
session_start();

error_reporting(E_ALL);


if (isset(
$_SESSION['user']) && $_SESSION['id'])
{


        
setcookie('user',$_SESSION['user'],time() + (200 24 60 60),'/'); 
        
setcookie('id',$_SESSION['id'],time() + (200 24 60 60),'/');


}


if (isset(
$logout))
{


        
$_SESSION['user'] = '0'
        
$_SESSION['id'] = '0';
        
        
setcookie('user','0',time() - (200 24 60 60),'/'); 
        
setcookie('id','0',time() - (200 24 60 60),'/');


}


if (isset(
$_COOKIE['user']) && $_SESSION['id'])
{
echo 
'Se accedio con el cookie '.$_COOKIE['user'].' y la session '.$_SESSION['id'].' <br />';
}
else
{
echo 
'solo usuarios registrados <br />';
}


if (isset(
$_SESSION['user']) && $_COOKIE['id'])
{
echo 
'Se accedio con la session '.$_SESSION['user'].' y el cookie '.$_COOKIE['id'].' <br />';
}
else
{
echo 
'solo usuarios registrados <br />';
}


if (isset(
$_COOKIE['user']) && $_COOKIE['id'])
{
echo 
'Se accedio con el cookie '.$_COOKIE['user'].' y el id '.$_COOKIE['id'].' <br />';
}
else
{
echo 
'solo usuarios registrados <br />';
}


if (isset(
$_SESSION['user']) && $_SESSION['id'])
{
echo 
'Se accedio con la session '.$_SESSION['user'].' y el id '.$_SESSION['id'].' <br />';
}
else
{
echo 
'solo usuarios registrados <br />';


Última edición por hawaiian050; 29/12/2008 a las 05:44 Razón: texto
  #18 (permalink)  
Antiguo 29/12/2008, 13:59
Avatar de hawaiian050  
Fecha de Ingreso: junio-2007
Mensajes: 285
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: ¿Cual es un método seguro de guardar login en cookie?

mm .. ahora mismo estoy testeando ... pero me gustaria una opiñon experta seria de mucha ayuda gracias, alguien que fuera tan amable de respondermela alguien ?

saludos
  #19 (permalink)  
Antiguo 08/01/2009, 09:15
 
Fecha de Ingreso: enero-2009
Ubicación: Málaga, España
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta Respuesta: ¿Cual es un método seguro de guardar login en cookie?

yo lo que veo mejor es guardar sólo el userID en la cookie.
en el login preguntar si desea ser recordado, en caso negativo, la cookie caduca en 1 hora, en caso afirmativo, la cookie podría tardar más en caducar, algunos días.
es una manera fácil de suplantar la identidad, pero si tu equipo es inseguro, lo mejor es que no te recuerde.
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:04.