Verificación de cuenta de inicio de sesión [cerrado]

0

Supongamos que desea crear una nueva cuenta en cualquier sitio web (hagámoslo en Facebook), ¿cómo comprueban que la identificación de Gmail o cualquier identificación de correo que ingresamos sea válida? Observé que algunos sitios web son vulnerables a eso. ¿Cómo lo verificarán?

    
pregunta user72720 12.02.2015 - 19:44
fuente

2 respuestas

2

Para verificar la existencia de una dirección de correo electrónico, el servidor puede hacer ping a esa dirección de correo electrónico contra un servidor SMTP correspondiente para validarlo. Hay algunos pasos involucrados. Suponiendo que el usuario envió (por ejemplo) una dirección de gmail, y suponiendo que es su aplicación web la que realiza la validación, usted haría lo siguiente:

Paso 1: envía un comando nslookup:

nslookup  –type=mx gmail.com

Este comando nslookup consultará los servidores de nombres para ese dominio. Dado que hemos especificado el tipo como MX, nuestro comando extraerá y listará los registros MX del dominio de correo electrónico. Reemplace gmail.com con el dominio de la dirección de correo electrónico que intenta verificar.

gmail.com MX preference=30, exchanger = alt3.gmail-smtp-in.l.google.com
gmail.com MX preference=20, exchanger = alt2.gmail-smtp-in.l.google.com
gmail.com MX preference=5,  exchanger = gmail-smtp-in.l.google.com
gmail.com MX preference=10, exchanger = alt1.gmail-smtp-in.l.google.com
gmail.com MX preference=40, exchanger = alt4.gmail-smtp-in.l.google.com

Paso 2: Como puede haber notado en la salida de nslookup, no es raro tener múltiples registros MX para un dominio. Elija cualquiera de los servidores enumerados en los registros MX, tal vez el que tenga el número de nivel de preferencia más bajo (en nuestro ejemplo, gmail-smtp-in.l.google.com), y "pretender" para enviar un mensaje de prueba a ese servidor desde su aplicación web:

Conéctese al servidor de correo a través de telnet:

telnet gmail-smtp-in.l.google.com 25

Saluda al otro servidor:

HELO

Identifícate con alguna dirección de correo electrónico ficticia:

mail from:<[email protected]>

Especifique la dirección de correo electrónico del usuario que está intentando verificar:

rcpt to:<[email protected]>

Paso 3: verifique la respuesta para determinar la validez de la dirección de correo electrónico. La respuesta para el comando 'rcpt to' le dará una idea de si la dirección de correo electrónico del usuario es válida o no. Si la dirección existe, la respuesta será:

OK

De lo contrario, la respuesta será un error 550, como:

[email protected] - The email account that you tried to reach does not exist.

... o esto:

[email protected] - The email account that you tried to reach is disabled.

La respuesta anterior se adaptó y tomó prestada de aquí:

enlace

Cómo hacer esto en PHP:

// include SMTP Email Validation Class
require_once('smtp_validateEmail.class.php');

// the email to validate
$email = '[email protected]';
// an optional sender
$sender = '[email protected]';
// instantiate the class
$SMTP_Validator = new SMTP_validateEmail();
// turn on debugging if you want to view the SMTP transaction
$SMTP_Validator->debug = true;
// do the validation
$results = $SMTP_Validator->validate(array($email), $sender);
// view results
echo $email.' is '.($results[$email] ? 'valid' : 'invalid')."\n";

// send email? 
if ($results[$email]) {
  //mail($email, 'Confirm Email', 'Please reply to this email to confirm', 'From:'.$sender."\r\n"); // send email
} else {
  echo 'The email addresses you entered is not valid';
}

Fuente del ejemplo de PHP anterior:

enlace

    
respondido por el vrtjason 12.02.2015 - 21:29
fuente
2

Hay dos formas principales de verificar una dirección de correo electrónico: verificar la validez y verificar la existencia.

La verificación de la validez se realiza al verificar si la dirección de correo electrónico sigue la sintaxis correcta. Hay un conjunto de reglas de validez que todos los correos electrónicos deben seguir. Se encuentran en RFC 3696 . Hay un expresiones regulares "simples" que pueden validar un correo electrónico:

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b.

Esto es simple y rápido, se puede hacer fuera de línea, pero no comprueba si el correo electrónico es real y si el usuario que lo proporciona es el verdadero propietario.

Por otra parte, la verificación de la existencia del correo electrónico generalmente se realiza enviando un enlace al correo electrónico proporcionado, o enviando un correo electrónico con un contenido especial y solicitando al usuario que responda ese correo electrónico.

Esto requiere más recursos, ya que se necesita para rastrear el correo electrónico utilizado y el token creado, y enviar o recibir correo electrónico. Por otro lado, confirma que el correo electrónico es válido, que existe y que el usuario que reclama su posesión es el propietario real del mismo.

Pero no creo que no validar una dirección de correo electrónico sea una vulnerabilidad. Podría ser un descuido, pero difícilmente una vulnerabilidad.

    
respondido por el ThoriumBR 12.02.2015 - 21:08
fuente

Lea otras preguntas en las etiquetas