Dudas login, registrar...

Iniciado por ‭lipman, 11 Diciembre 2008, 14:12 PM

0 Miembros y 1 Visitante están viendo este tema.

‭lipman

Buenas. Quiero hacer un sistema de registros y loggin y me entran varias dudas.

Cuando te registras, el user y el password lo sueles guardar en la base de datos imagino, pero, hay que ponerle alguna protección especial? o es como cualquier otro dato? Tienen los datos de la base de datos algún tipo de peligro?

Al loguearte, quiero poner tambien algo ponga "Recordarme", pero he oido que guardar la contraseña en las cookies es un gran error. Como podría solucionarlo?

Saludos y gracias

:ohk<any>

Pues al guardarlas en la base de datos debes antes encriptarla, para eso puedes usar sha1, md5 u otros que estan disponibles. (si es a eso a lo que te refieres)

Y por lo de "recordarme", pues si es un error# pero de nada sirve prohibirlos  :P
Si te preocupan las cookies mejor haz que tu sitio sea inmune a los XSS  ;D
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

Hadess_inf

Podria ser algo como esto, aqui se usa el md5 para tratar de proteger la clave:

$usr = "PneRoto";
$pwd = md5("mimamamequieremucho");
$sql ="insert into usuario values ('$usr','$pwd')";
mysql_query($sql);

::) ::) ::) ::) ::)

‭lipman

#3
Muchas gracias a los dos  ;D a ver si lo acabo ya de una vez xD

Saludoss

PD: prefiero no abrir un post, aunque no tiene nada que ver pero, los posts de los foros se guardan en una tablita de esas? Quiero decir... se puede poner para guardar en una celda un texto sin especificar el tamaño máximo? Puede guardar muchos carácteres una tabla?

PD2: como seria para descifrar de md5?

& eDu &

Cita de: lipman en 11 Diciembre 2008, 14:12 PM
Buenas. Quiero hacer un sistema de registros y loggin y me entran varias dudas.

Cuando te registras, el user y el password lo sueles guardar en la base de datos imagino, pero, hay que ponerle alguna protección especial? o es como cualquier otro dato? Tienen los datos de la base de datos algún tipo de peligro?

Al loguearte, quiero poner tambien algo ponga "Recordarme", pero he oido que guardar la contraseña en las cookies es un gran error. Como podría solucionarlo?

Saludos y gracias
1º Puedes cifrar la contraseña con algún algoritmo tuyo o ya creado por ejemplo:
Código (php) [Seleccionar]
<?
$pass = crypt("lipmanesfeo");
echo $pass;
?>

Tienen algún peligro las bases de datos... bueno si alguien consiguiera acceder a ella y no estubieran encriptadas las contraseñas y fueran importantes... adiós! Si sabes lo que es una PTC(paid to click) los listos no encriptan las contraseñas y muchos usuarios ponen como contraseña las cuentas de su PayPal y AlertPay... entonces los dueños... sacan provecho al no estar cifrada la contraseña.
2º Puedes guardar la IP donde pidieron que se guarden las contraseñas es decir:
Código (php) [Seleccionar]
<?
$guardar = mysql_query("INSERT INTO tabla_usuarios  (IP,USUARIO,CONTRASEÑA) VALUES ('ip','usuario','contraseña'");
?>

y cuando entren que haga un if
Código (php) [Seleccionar]

<?
if (la ip == la ip guardada){
?>
<input type="text" value="usuario"/>
<input type="text" value="contraseña"/>
<?
}else{
?>
<input type="text" />
<input type="text" />
<?
}
?>


No se si te sirvió...

‭lipman

#5
Es cierto... :D No se me ocurrió jugar con la IP  :P eso para lo de "Recordar" me servirá, muchas gracias, aunque me he dado cuenta del mensaje subliminal xD.

Pero si encriptas la clave con crypt o con md5... no puedes desencriptarla de ninguna manera?

Saludoss

Edito: según he visto "MD5 es un algoritmo de "una sola vía", o "One Way", es decir que no lo puedes descifrar, una forma sería hacer un "brute force", pero te tomaría demasiado tiempo." Así que he de suponer que es segura =P y con respecto a la de crypt " No existe una función de descifrado, ya que crypt() utiliza algoritmos no reversibles."

Entonces nada más creo, muchas gracias de nuevo ^^

& eDu &

Me equivoqué, para cifrar es:

$pass = crypt("lapass","lipmanesfeo");

¿Que si se puede descifrar desde la funcion crypt...?
Creo que no, en el login haces lo siguiente:
Código (php) [Seleccionar]

<? if(isset($_post['usuario'])){
$contraseña = $_POST['contraseña'];
if(crypt($contraseña,"limpanesfeo") == lacontraseñaguardada){
Login
}else{
COntraseña incorrecta
}
}
?>
<form action="login.php" method="post"/>
Usuario
<input type="text" name="usuario"/>
Contraseña
<input type="password" name="contraseña"/>
<input type="submit" value="Login"/>

#!drvy

#7
Código (php) [Seleccionar]
<?php
# |-(B)-(S)-(M)-|

echo '<font color="red"> Comprobando usuario... </font> <br>';
$db_user 'root';
$db_pass '';
$db_name 'users';
$db_host 'localhost';

$connection mysql_connect($db_host$db_user$db_pass) or die (mysql_error());
mysql_select_db($db_name$connection) or die (mysql_error());


$user htmlentities($_POST['user']);
$pass htmlentities(md5($_POST['pass']));

$num 0;
$query mysql_query("SELECT * FROM users WHERE user='$user'",$connection);

if (
$num mysql_num_rows($query)) 
{
$duser mysql_result($query,0,"user");
$dpass mysql_result($query,0,"password");
} else {exit(
" - Cab*** el usuario introducido no existe o.O");}

if (
$pass != $dpass) {exit(" - Pero seras cab*** (?) pon la p**a contraseña correctamente xD");}


echo 
"Hello, my name is Ahmed... I'am the dead terrorist....I'm g0nna kill ya !!!";

?>


un script que tenia por ahí xD

yo siempre guardo cookies cuando quiero que me recuerde.... o si no sessiones... de todos modos mientras la contraseña este cifrada no veo porque no. Lo de la ip no es muy muy utill si el usuario tiene una ip dinámica por ejemplo..
y procura limpiar variables por sqli...





Saludos

‭lipman

Al final me ha quedado parecido al tuyo #bsm y eso antes de mirarlo xD.

Con lo de respecto a la IP, ya habia pensado en lo de IP dinámica (más que nada porque tengo una xD) y se me habia ocurrido comparar los 3 primeros trozos de la IP, es decir 255.255.255.255 puesto que creo recordar que con IP dinámica solo cambia el último (y ahora empiezo a dudar si tambien cambia el penúltimo =P).

El único "problema" sería si alguien spoofeara la IP =S o si por algún casual alguien tuviera la misma IP (esto no se si es posible xD)

Un saludo

WHK

#bsm tu código tiene sql inyección ya que htmlentities no filtra las comillas simples, mejor usas htmlspqcialchars con ent_quotes aunque tampoco es una solución válida para cuando si quieras ingresar datos con comillas, para eso hay una función especializada para evitar una inyección sql y se llama mysql_real_escape_string

por ejemplo..
Código (php) [Seleccionar]
mysql_query('SELECT * FROM users WHERE user=\''.mysql_real_escape_string($user).'\'',$connection);

Claro que esto tampoco funciona si no encerramos la variable en comillas para que no pueda escapar.

Eso de guardarlas cookies puedes guardar solo un $SESSION[] con phpsessid, de esta forma puedes almacenar su user, id, hasta su pass sin que nadie tenga acceso a ella ni el rpopio usuario ya que todo estará guardado en el servidor mostrando unicamente el hash, ahora también puedes agregar datos como ip y el explorador para comprobar que el es el verdadero usuario con esa cookie y si no es entonces que sea expulsado y evitamos un robo de cookies ya que si alguien te la roba no podrá hacer nada a menos que sepa la estructura de la sesión misma y spofear la ip mas el explorador aunque lo veo dificil y mas aún si no delatas el código.. hasta puedes cifrar todo eso en md5 como comprobador (no es buena idea si es propenso a ataques ddos  :P).

Eso que alguien dijo de hacer el sitio inmune a xss depende del sistema que tan interactivo sea, si es muy interactivo es dificil llegar a ese nivel aunque si se puede evitar el uso malicioso de un xss como evitar los xsrf con tokens y verificación de referers, etc mas una prevención de robo de cookies como lo dije mas arriba.