Foros del Web » Programando para Internet » PHP »

PASS por mail sin MD5, como puedo hacerlo?

Estas en el tema de PASS por mail sin MD5, como puedo hacerlo? en el foro de PHP en Foros del Web. Hola chicos como andan, solucionado todo me queda solo enviar por mail el nuevo pass al cliente por mail. Funciona todo bien, pero el pass ...
  #1 (permalink)  
Antiguo 03/04/2008, 14:04
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
PASS por mail sin MD5, como puedo hacerlo?

Hola chicos como andan, solucionado todo me queda solo enviar por mail el nuevo pass al cliente por mail. Funciona todo bien, pero el pass al encriptarlo MD5 va bien, pero al tomarlo con el select dde la tabla me lo envía perfectamente pero en MD5 . lo que al cliente no le serviría para nada. Como puedo solucionarlo?

Código PHP:
session_start(); 
$usuario=$_SESSION['usuario_login'];  
$passanterior=$_SESSION['usuario_password']; 
$pass=md5($_POST['pass']);//pass nuevo  
$email=$_POST['email'];
$connectmysql_connect('localhost''''');
mysql_select_db(''$connect);
$result mysql_query ("UPDATE usuarios SET email='$email',pass='$pass' WHERE usuario='$usuario'",$connect);
if (!
$result) { 
$message 'Invalid query: ' mysql_error() . "\n"
$message .= 'Whole query: ' $query
die(
$message); 


echo 
"la contraseña fue cambiada correctamente, cierre la sesión y vuelva a ingresar con el nuevo password";
echo 
'<a href="aut_logout.php">cerrar sesi&oacute;n </a>';
if(isset(
$_POST["email"])) 

$email $_POST["email"]; 
//recuperamos el nombre de usuario y la contraseña 
$result mysql_query("SELECT usuario,pass,email FROM usuarios WHERE email='$email'"); //consultamos BD 
if($row mysql_fetch_array($result)) //si existe el la dirección de email 

$mensaje.= "Su usuario y contraseña son: "."\r\n";
$mensaje.= "User:".$row['usuario']."\r\n";
$mensaje.= "Password: ".$row['pass']."\r\n"//capturamos contraseña 
$destino.= "destino: " $HTTP_POST_VARS["email"] ."\n";
$mensaje.= "Correo del servidor web: " $HTTP_SERVER_VARS['SERVER_ADMIN'] . "\n";
$mensaje.= "Nombre del servidor: " $HTTP_SERVER_VARS['SERVER_NAME'] . "\n";
$cabeceras 'From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();
mail($destino,$cabeceras,$mensaje);

else 

//email incorrecto 
echo "Lo operación no pudo realizarse, Consulte a nuestro operadror desde el siguiente vínculo: ";
echo 
'<p>' .'<a href="contacto1.php">Consultar</a>';}} 
  #2 (permalink)  
Antiguo 03/04/2008, 14:18
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: PASS por mail sin MD5, como puedo hacerlo?

Pues lo que debes hacer es no enviarlo encriptado con MD5 solo el password normal.. o encriptarlo en una manera que el cliente y tu entiendan por ejemplo agregarle una letra y que no vaya completa.. o algo por el estilo ya que esa seria una buena manera ademas el no se para que lo encriptas con MD5 cuando lo vas a enviar..? Pero bueno mi consejo es que la envies asi como va..

Salu2..!!
__________________
Somos lo que nosotros queremos ni mas ni menos..
No hay dia mas perdido que aquel en que no hemos reido..
La vida es tal y como debe ser...
Nadie vivira por ti...
  #3 (permalink)  
Antiguo 03/04/2008, 15:18
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Re: PASS por mail sin MD5, como puedo hacerlo?

Gracias ante todo por responderme agressor , el MD5 es por seguridad, uso el autentificador de CLUSTER y el mismo utiliza la encriptación MD5 para los pass.

No se me ocurre otra forma, tendré que desertar de hacerla MD5. O enviarla y luego encriptarla con otro update. sigo pensando
  #4 (permalink)  
Antiguo 03/04/2008, 15:24
Avatar de agressor  
Fecha de Ingreso: noviembre-2007
Ubicación: Knocking the Death Door..
Mensajes: 368
Antigüedad: 16 años, 5 meses
Puntos: 3
Re: PASS por mail sin MD5, como puedo hacerlo?

Por que en vez de enviarle la clave le permites escribir una nueva luego esa clave nueva se la envias en modo random para que solo el usuario que la escribio la sepa..?

Esa tambien seria una opcion

Salu2..!!
__________________
Somos lo que nosotros queremos ni mas ni menos..
No hay dia mas perdido que aquel en que no hemos reido..
La vida es tal y como debe ser...
Nadie vivira por ti...
  #5 (permalink)  
Antiguo 03/04/2008, 18:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: PASS por mail sin MD5, como puedo hacerlo?

MD5 es un método de encriptación que hasta donde yo sé no puede ser revertido. La única solución es que generes una nueva contraseña, actualices la base de datos, y la envies al mail, indicándole al usuario los pasos para cambiarla. Ahora, algo más complejo sería generar un link con un código aleatorio que le permita al usuario definir una nueva contraseña. Este link con el código generado se lo envias por correo electrónico.

Y hay otros métodos de encriptación que sí permiten la "reversibilidad", como base64_encode() y base64_decode().

Un saludo,
  #6 (permalink)  
Antiguo 03/04/2008, 18:55
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: PASS por mail sin MD5, como puedo hacerlo?

nunca te has preguntado para q algunas paginas te piden dos veces el pass ?
creea 2 campos en tu bd uno q sea pass y el otro backpass de esta forma cuando el cliente quiera recuperar el pass se lo reenvie el mismo de otra forma seria q generaras un nuevo pass aleatorio y mandarselo con previo registro en la base de datos espero q te sirva de algo
  #7 (permalink)  
Antiguo 03/04/2008, 19:02
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: PASS por mail sin MD5, como puedo hacerlo?

@talcual: http://www.forosdelweb.com/f18/como-...0/#post2305247

Cita:
Iniciado por talcual Ver Mensaje
las contraseñas no se deberian recuperar por cuestiones de seguridad se deberian remplazar por nuevas o tener 2 campos en tu bd una con el pass codificado (md5 , sha1 )y el otro con el pass normalito
Cita:
Iniciado por okram Ver Mensaje
Si hablamos de seguridad, no tiene sentido almacenar de ambas formas una contraseña. El uso de métodos de encriptación como md5() es para justamente evitar que un atacante conozca la contraseña real. Si la guardamos también en la base de datos así tal y como es... ¿Con qué fin?

Tienes razón en lo de evitar en lo posible la recuperación de las contraseñas, sino más bien se debe dar al usuario la oportunidad de cambiarla en caso de olvido. Una contraseña segura sería aquella que bajo ningún método, una vez encriptada, pueda ser desencriptada.

Saludos,
  #8 (permalink)  
Antiguo 03/04/2008, 19:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Re: PASS por mail sin MD5, como puedo hacerlo?

Perdón pero poestee cuando uds respondían, lo que agradezco muchísimo.

Talcual eso lo pensé, pero llegué a la conclusión de okram, para que encriptar si tengo en el otro campo el pass "original" los sistemas gralmente, te hacen generar un nuevo pass no te reenvían el olvidado,
Y el autentificador de CLUSTER usa MD5 para el ingreso.

Y se podría hacer el update del
Código PHP:
$pass=$_POST['pass']; 

hacer el envío y luego hacer nuevamente el update
Código PHP:
$pass=md5($_POST['pass']); 
en el mismo script?

lo he intentado pero no logro.
Tomando una variable como tal pass podría tomarse por post hacer el update enviarla y en el mismo script o redireccionar a otra consulta en otro archivo que haga esto
Código PHP:
UPDATE usuarios SET pass md5(pass
¿?

Última edición por mvlsistemas; 03/04/2008 a las 19:27
  #9 (permalink)  
Antiguo 03/04/2008, 19:26
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: PASS por mail sin MD5, como puedo hacerlo?

Hazlo todo en la misma página. Después de validar al usuario de algún modo (con su fecha de nacimineto o su e-mail digamos) (esto para evitar que otras personas puedan hacer que la contraseña de tus usuarios se cambien sin que ellos lo hayan solicitado), generas la nueva contraseña y la guardas en una variable. Busca por generar codigos aleatorios con php. Luego actualizas la base de datos, guardando el password con md5, y finalmente lo envias al correo electrónico usando la función mail() (O lo que uses para enviar los mensajes).

Saludos,
  #10 (permalink)  
Antiguo 03/04/2008, 21:39
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: PASS por mail sin MD5, como puedo hacerlo?

Hola talcual:

Cuando te piden dos veces el password no es para guardarlo en otro campo de backupo sino pierde sentido la seguridad!

Te piden dos veces el password para asegurar que no te equivoques al escribirlo, eso es todo, los dos campos deben coincidir.

Hola mvlsistemas: la mejor forma es generando (como ya han dicho) un nuevo password y enviándolo por email.

Ahora ten en cuenta que muchas veces gente malintencionada puede generar passwords para usuarios que no lo pidieron y de esa forma entorpecen el funcionamiento de la web.

La mejor forma de hacerlo es:

Paso 1:
Cuando un usuario pierde el passwrd va al sitio y solicita uno nuevo.
En el sitio sólo le pides el email nada mas que eso.

Paso 2:
Corrobora que el pasword corresponda con un usuario y si corresponde entonces le envías un link por mail que contenga en la url un código unico.

Paso 3:
Cuando hacen click en el link ahi lo llevas al site que al corroborar que el código es verdadero le dejar elegir otro password.


Obviamente este en una fomra mas de las infinitas posibilidades y todo ya depende de tu imaginación donde haya un equilibrio entre seguridad y funcionalidad.

Saludos
  #11 (permalink)  
Antiguo 04/04/2008, 07:42
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Re: PASS por mail sin MD5, como puedo hacerlo?

Hola chicos, mil pero mil gracias.
Mi procedimiento es el siguiente.
Registro pos un csv los usuarios y pass sin mail porque el mail no lo tiene el cliente en la bd.
El usuario pide us y pass y manualmente se lo envían.
Una vez en ingresado con ese us y pass tiene una opción cambiar pass por uno de su agrado o fácil de recordar para el y ahí si teniendo el campo email vacío al hacer el UPDATE cambia el pass y a su vez se actualiza el mail.
De ahí tomo ese mail y envío el user (que no cambia nunca) y el pass .
Entonces no pasaría que otra persona lo pueda cambiar porque esta dentro de la sesion pero mi roblema es el tomarlo y a la vez encriptarlo.
NI bien lo solucione lo posteo para que me corrijan soy DE MADERA para php!!!
  #12 (permalink)  
Antiguo 04/04/2008, 07:54
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: PASS por mail sin MD5, como puedo hacerlo?

Lo más práctico es lo que te hemos estado diciendo en todo este tema:
  1. El usuario olvida su contraseña, y entra a una página de restauración de contraseñas (olvidopassword.php).
  2. En esta página generas un código aleatorio y lo guardas en la base de datos. Le mandas al usuario por correo electrónico un link que dirija a otra segunda página (cambiapassword.php), pasando por la URL el código que generaste (cambiapassword.php?codigo=hbv78r4hfuhnv).
  3. En esta segunda página buscas en la base de datos por un registro que tenga asignado ese código, que será el del usuario que desea cambiar su contraseña. OJO que hasta este momento no has hecho ningún cambio en su contraseña.
  4. Cuando encuentras el registro podrías solicitar algún dato de confirmación, como preguntarle cuál es su email o su nombre de usuario. Esto para evitar que usuarios que logren ingresar un código aleatorio correcto puedan cambiar la contraseña de alguno de tus usuarios. Si lo confirmas, le das un formulario donde pueda ingresar una nueva contraseña. Hecho esto, encriptas la contraseña y la guardas en la base de datos. No es recomendable enviarla tal cual es por correo electrónico. Podrías enviarle un mail de confirmación de cambio de contraseña, indicándole tan sólo que su contraseña ha sido cambiada exitósamente en tal fecha.
Un saludo,
  #13 (permalink)  
Antiguo 06/04/2008, 08:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
Re: PASS por mail sin MD5, como puedo hacerlo?

Bueno apremiado por el tiempo hasta ahora lo "solucione" por decirlo con un campo repita el pass y a ese lo tomo como nuevopass por POST y es el valor que envío por el mail.
Al pass lo tomo como pass por POST y a ese si lo UPDATE en MD5.

OKRAM gracias, voy a trabajar en lo que me sugeris ahora por que mi solución fue bastante rústica y tengo que mejorarla a la brevedad. gracias chicos a todos!!


getchange.php
Código PHP:
require("aut_verifica.inc.php"); // incluir motor de autentificación.
$nivel_acceso=1// definir nivel de acceso para esta página.
if ($nivel_acceso $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
session_start(); 
$usuario=$_SESSION['usuario_login'];  
$passanterior=$_SESSION['usuario_password']; 
$pass=md5($_POST['pass']);//pass nuevo 
$nuevopass=$_POST['nuevopass'];//pass nuevo  
$link mysql_connect('localhost''''');
mysql_select_db(''$link);
mysql_query ("UPDATE usuarios SET pass='$pass' WHERE usuario='$usuario'");
if(isset(
$_POST["email"])) 

$email $_POST["email"]; 
//recuperamos el nombre de usuario y la contraseña 
$link mysql_query("SELECT usuario,pass,email FROM usuarios WHERE email='$email'"); //consultamos BD 
if($row mysql_fetch_array($link)) //si existe el la dirección de email 

$mensaje.= "Su usuario y contraseña son: "."\r\n";
$mensaje.= "User:".$row['usuario']."\r\n";
$mensaje.= "Password: ".$nuevopass."\r\n"//capturamos contraseña 
$destino.= "destino: " $HTTP_POST_VARS["email"] ."\n";
$mensaje.= "Correo del servidor web: " $HTTP_SERVER_VARS['SERVER_ADMIN'] . "\n";
$mensaje.= "Nombre del servidor: " $HTTP_SERVER_VARS['SERVER_NAME'] . "\n";
$cabeceras 'From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();
mail($destino,$cabeceras,$mensaje);

}  

echo 
"la contraseña fue cambiada correctamente, cierre la sesión y vuelva a ingresar con el nuevo password";
echo 
'<a href="aut_logout.php">cerrar sesi&oacute;n </a>'

formu.php

Código HTML:
<form action="getchange.php" method="post">
<br>
<p> Nuevo Password:<br>
<input name="pass" size="28" maxlength="20" type="pass">
<p>Repita su nuevo password
<p>
  <input name="nuevopass" type="password" id="nuevopass"> 
<p>Ingrese su email
<p>
  <input name="email" type="text" id="email">
<p> <input class="boton" value="Registrar" type="submit">
</form> 
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 13:30.