Foros del Web » Programando para Internet » PHP »

Enviar contraseña por mail de forma segura

Estas en el tema de Enviar contraseña por mail de forma segura en el foro de PHP en Foros del Web. ¡Saludos comunidad! Tengo una gran interrogante que sé, tiene múltiples soluciones , pero quiero elegir la correcta. La cuestión es simple, tengo una cuenta de ...
  #1 (permalink)  
Antiguo 17/08/2012, 03:56
Avatar de 1333nvz  
Fecha de Ingreso: julio-2012
Mensajes: 20
Antigüedad: 11 años, 10 meses
Puntos: 1
Enviar contraseña por mail de forma segura

¡Saludos comunidad!
Tengo una gran interrogante que sé, tiene múltiples soluciones, pero quiero elegir la correcta.
La cuestión es simple, tengo una cuenta de administrador(en mi sitio) que registra los demás usuarios , con todos los datos, nombre, email y contraseña. Actualmente el sitio envía los datos (incluída la contraseña) a través de la función mail() de PHP al correo del usuario registrado previamente por el administrador. Sin embargo, esta forma no es muy segura, y ahí entra mi pregunta: ¿qué puedo hacer para evitar esto o agregar seguridad al algoritmo?.

PREGUNTA RÁPIDA: ¿cómo manejan estas cuestiones los grandes sitios?.
Es decir, en muchos lugares me llegan, o bien directamente la contraseña o bien un enlace para establecerla.

Algunas soluciones que se me ocurrieron:
a) Enviar el mail de forma segura (encriptación por ej), el problema es que no sé nada de seguridad o encriptación.
b) Enviar mail para confirmar cuenta o permitir que el usuario establezca la contraseña, el problema es que esto sería igual de inseguro que lo planteado anteriormente.
c) Confirmar datos por medios no informáticos. Prácticamente descartada



En fin, ¿qué me recomiendan?¿alguna idea?
Desde ya, ¡muchas gracias!
  #2 (permalink)  
Antiguo 17/08/2012, 04:03
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Enviar contraseña por mail de forma segura

Permitiendo a los usuarios registrarse xDD
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 17/08/2012, 04:19
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Enviar contraseña por mail de forma segura

En el registro.php añade

Código PHP:
Ver original
  1. mysql_query("INSERT INTO usuarios(Nombre,Email,Contrasena,EstadoKEY,CodigoKEY,Baneado,Ip) VALUES ('$_POST[nombre]', '$_POST[email]', '$Contraseña', '1', '$CodigoKEY', '0', '$_SERVER[REMOTE_ADDR]')");
  2.     $registros = mysql_query("SELECT Email,CodigoKEY FROM usuarios WHERE Nombre = '$_POST[nombre]'");
  3.     while($reg = mysql_fetch_array($registros)){
  4.     mail("$_POST[email]","Activa tu cuenta.","Hola $_POST[nombre], Bienvenido tu te as registrado en http://localhost y para activar tu cuenta necesitas meterte en esta url. http://localhost/validacion.php?email=$reg[Email]&key=$reg[CodigoKEY]");
  5.     }
  6.     echo "<font color='green'>Registro Correcto</font>";

creas un archivo llamado validacion.php con esto

Código PHP:
Ver original
  1. <?php
  2. include ("config/conectar.php");
  3. ?>
  4. <?php
  5. $verificacion = mysql_query("SELECT * FROM usuarios WHERE Email = '$_GET[email]' AND CodigoKey = '$_GET[key]'");
  6. if ($veri = mysql_fetch_array($verificacion)){
  7.     mysql_query("UPDATE usuarios SET EstadoKEY = '0' WHERE Email = '$_GET[email]'");
  8.     echo "Tu cuenta ha sido activada Inicia Sesion.";
  9.     echo "<meta http-equiv='refresh' content='2; url=index.php'>";
  10. }
  11. ?>

y en el login añade:
Código PHP:
Ver original
  1. <?php
  2. /* Sistema de baneo y de activar cuenta */
  3. if($_COOKIE['login']){
  4. $baneado = mysql_query("SELECT EstadoKEY,Baneado FROM usuarios WHERE Email = '$_COOKIE[login]'");
  5.     while($bane = mysql_fetch_array($baneado)){
  6.         if($bane['EstadoKEY'] == "1"){
  7.         echo "Tu cuenta no esta activada !Activala¡";
  8.         }
  9. /* End Sistema de baneo y de activar cuenta */
  10.  ?>

En tu base de dato crea una tabla llamado CodigoKey y otra Estado

Y el archivo que te he puesto funciona asin

Tu en un get pones el email y el codigokey y si es correcto Cambia el estado 1 por 0 y entonces si es 0 quiere decir que cuenta activada
  #4 (permalink)  
Antiguo 17/08/2012, 13:52
Avatar de 1333nvz  
Fecha de Ingreso: julio-2012
Mensajes: 20
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Enviar contraseña por mail de forma segura

Muchas gracias a ambos por responder, pero creo que tomaré la opción de Eleazan, es lo más lógico, solo que después de horas de programación encima, se hace difícil hasta usar el sentido comun.

Cita:
Permitiendo a los usuarios registrarse xDD
Lo que voy a hacer es permitir a los usuarios registrarse, y el administrador confirmará o no los registros entrantes.

Sin embargo, en caso de que quiera recuperar la contraseña, ¿cómo podría hacer? Por qué tendría que enviar la contraseña nuevamente, y estaría otra vez en el problema del principio. Nota: en lo posible me gustaría evitar la pregunta secreta.

¡Saludos! y gracias nuevamente.
  #5 (permalink)  
Antiguo 17/08/2012, 14:01
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Enviar contraseña por mail de forma segura

Te sugiero esto:

Que los usuarios se registren solos, poniendo la contraseña que quiera, y sólo mandar la activación de la cuneta por email. Además puedes poner un captcha para evitar registros por robots.

El cambio de contraseña lo puedes hacer enviando una liga que los lleve a un script para cambiar la contraseña, y que dicha liga expire en cuanto cambien la contraseña o pase cierto tiempo.

Etiquetas: contraseña, mail(), seguridad, ssl
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 15:02.