Vamos a ver, estoy programando una cosa en PHP/SQL, lo que no se bien es como hacer lo siguiente.
- Hacer que un user se cree una cuenta (se hacerlo)
- Hacer que se guarde datos tipo, nick, pass (en md5 o no) (se hacerlo)
- Hacer que al logearse se cree un cookie con un contenido (se hacerlo)
Lo que no se o mejor dicho no entiendo es que me recomendais que guarde en la cookie para saber que user es, me eplico, podría hacer una función random que al crear una cuenta se guarde como el valor "cookie", pero es un poco a lo desesperado, me gustaría saber si hay alguna forma mejor para hacer eso.
Muchas gracias.
Me haces dudar ami también :)
¿Quieres saber que poner en la cookie para saber que user es?
Puedes poner un identificador o el nombre de usuario, por ejemplo.
Pero tendrás que validar que es un usuario correcto. Una solución sería tener el par user-password en la cookie y comprobar que ese pass corresponde a ese user.
Si solo pones un id o un nombre, puede falsearse facilmente.
- El problema de si pongo su nick es que cualquiera que edite la cookie ya podría entrar en la cookie de otro.
- El problema de si pongo la pass en la cookie aunque sea cifrada (MD5, etc...) sería que se puede conseguir con crackeadores y que si hay dos users con la misma password pues no funcionaría bien.
Si pongo un "id" no se puede falasear muy facilmente (creo XD), quiero decir, por ejemplo, si pongo un random que sea de "0" a "9" y de "A" a "F" con una longitud de 15 dígitos, pues sería muy complicado, pero creo que esto sería un poco "a la desesperada" ¿No?
Un saludo.
Si pones el user-pass no hay problema. Salvo que le roben la cookie, pero es un riego asumible.
Si pones user-pass o id-pass no hay ningun problema con que dos usuarios tengan la misma contraseña. Porque tú lo que compruebas es que la contraseña de tal usuario sea tal. El único problema es que dos usuarios con un mismo nombre(que si lo permites es poco lógico) tengan la misma pass.
El tema de crackear un md5 es demasiado complicado, siempre que no sea una contraseña corta y muy usual. Ahora te pongo un par de ejemplos para salvarlo.
Que mas...uhmmm. ahh si, cuando hablo de un identificador me refiero a tener una colunma autoincrementable en la tabla "users", con lo que cada nuevo usuario registrado tendrá una id = (id_ultimo_registrado) + 1; eso es lo más habitual en sistema de usuarios, llevar un recuento de los que hay e identificarlos por un número.
Otra cosa...para complicar el crackeo de md5, por ejemplo:
<?php
$pass = "blabla"; //pass introducida por el usuario al registrarse.
$pass = numAleatorio()."!.<".$pass."7bhw"; //pass que irá a la bd y a la cookie posteriormente.
?>
O más facil todavia:
<?php
$pass = md5(md5());
?>
También hay otros algoritmos de cifrado, pero con eso me parece bastante.
No se si me dejo algo...
Ok, gracias, no obstante si pongo lo de "autoincrementar" con cambiar de número ya se podría acceder a otra cuenta.
De todos modos como me gustaría que no existiese nada de pass ni de user en la cookie, lo haré del otor método que ya he dicho antes de dar por random un valor a cada usuario.
Muchas gracias por todo.
Cita de: dimitrix en 17 Septiembre 2008, 20:00 PM
Ok, gracias, no obstante si pongo lo de "autoincrementar" con cambiar de número ya se podría acceder a otra cuenta.
De todos modos como me gustaría que no existiese nada de pass ni de user en la cookie, lo haré del otor método que ya he dicho antes de dar por random un valor a cada usuario.
Muchas gracias por todo.
Volvemos a lo mismo, si pones solo el id si podria cambiarse...si pones el id y la contraseña no xD.
Poner un numero aleatorio o el usuario-contraseña(bien cifrados) es exactamente igual de seguro, me atrevería ha decir que lo segundo es mejor.
Pero bueno, es lo que yo pienso.
Que pasa si el navegador tiene bloqueadas las cookies???
De que otra forma podemos hacerlo???
Saludos!!!
Eso sería problema del user, no obstante también se puede hacer así:
http://www.dominio.com/algo.php?session=af33e5838ffedb4d3d5233a92609cf09
Un saludo.
Cita de: SpiderNet en 19 Septiembre 2008, 03:31 AM
Que pasa si el navegador tiene bloqueadas las cookies???
De que otra forma podemos hacerlo???
propagación por url, aunque igual que el anterior, tiene sus desventajas
Justamente hoy estaba pensando en eso...
¿Que tan bueno sería hacer algo así?
Cuando el usuario ingrese sacar obtener el timestamp
Guardar en la base de datos el timestamp
Guardar en las cookies el id de usuario y el timestamp (codificado quizas)
Cuando se desee verificar que el usuario es legitimo se compara el id y el timestamp
Ahora si quieren falsificar las cookies del usuario tendrían que saber el momento exacto en que ingresó por ultima vez. Y la contraseña no aparece por ningún lado
¿Como ven? ¿Es buena idea? ¿Es seguro?
Es lo mismo, si para entrar se requiere el nombre de usuario y el timestamp y alguien os consigue de la cookie...ya puede entrar jeje
El tema esque si usas cookies de esa forma te arriesgas a eso. Pero se puede pensar en usar sesiones por ejemplo, o una mezcla de ambas cosas...nose.
Pero el timestamp se actualizaría cada vez que el usuario ingresa con su nombre y contraseña. El usuario no ve el timestamp por ningun lado, si no que se toma como un valor más de seguridad.
O mejor guardamos algo asi en la cookie
md5(timestamp_cookie.md5(pass_cookie));
y luego lo comparamos con
md5(timestamp_sql.pass_md5_sql);
No sé ya medio me hice bolas. El punto es que sería un punto más deseguridad por que es difcil adivinar el segundo exacto en que el usuario ingresó por ultima vez al sitio.
ummh, no termino de comprenderte.
Dices que el timestamp se actualiza cada vez que el usuario entra. Y dices que es dificil adivinar el segundo exacto en el que un usuario se loguea.
¿A que te refieres? ¿Cuando comparas los timestamp? jajaj estoy hecho un lio.
Yo lo que veo es que pongas lo que pongas en una cookie, si alguien se hace con ella podrá hacerse pasar por ese usuario ni no se compara por ejemplo el identificador de session (y aun así es posible). Ya sea timestamp, id, pass, usuario, lo que sea...no se si me explico.
yo no se para que os complicáis tanto la vida, menudos peliculones os montáis xD
poner 2 valores para cada usuario, uno único y el otro que se pueda repetir (el user pass de toda la vida) si eres un paranoico cifra los datos y listo
si un usuario quiere mantener en seguridad los datos de su cookie que le de a logout cuando termine la sesion
claro esta el programador se encarga de darle esa opción de logout que consiste en borrar las cookies (ponerlas a vacío) para que nadie fisgonee