Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/01/2003, 03:30
Avatar de BVis
BVis
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 21 años, 5 meses
Puntos: 0
Lo que se suele emplear habitualmente, es responder por email, con una nueva contraseña temporal, generada de forma aleatoria. Dándole la posibilidad al usuario de cambiarla manualmente por otra.

Aquí explico por encima una forma sencilla de implementar encriptación de contraseñas, usando directamente las funciones que incorpora MySQL.

Al insertar el Usuario (se supone que las variables provienen de un formulario que emplea el método POST):

$sql = "INSERT INTO usuarios (varioscampos='variosvalores', password=PASSWORD('{$_POST['password']}'))";

Despues cada vez que se quiera autentificar al usuario:

$sql = "SELECT cualquier_campo FROM usuarios WHERE id={$_POST['id']} AND password=PASSWORD('{$_POST['password']}')";

Y despues mirar el resultado de mysql_num_rows(), si vale 1, entonces OK, sino ERROR.

Así empleamos una de las funciones de encriptación de passwords que usa MySQL (hay otras).

NOTA: El campo 'password' es recomendable hacerlo tipo VARCHAR de bastantes caracteres, pues las claves encriptadas suelen quedar algo...larguillas.

Todas estas funciones de encriptación de contraseñas son unidireccionales, pues usan funciones de HASH, y es imposible recuperar el valor original, si no es por un ataque de 'fuerza bruta'.

Lo cierto, es que este sistema es el clásico y más seguro, pues nadie más que el usuario conoce el valor real de la contraseña. Y en caso de olvidársele, se le enviará una temporal a la dirección email segura indicada en el momento del registro. Para comprovar la identidad del individuo se suele emplear una pregunta de tipo 'personal'.

1 Saludo
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates

Última edición por BVis; 24/01/2003 a las 03:34