Controllo dell'account di accesso [chiuso]

0

Supponiamo di voler creare un nuovo account in qualsiasi sito web (facciamolo su Facebook), come controllano l'ID di Gmail o qualsiasi ID di posta che abbiamo inserito è un ID di posta valido? Ho notato che alcuni siti Web sono vulnerabili a questo. Come lo verificheranno?

    
posta user72720 12.02.2015 - 19:44
fonte

2 risposte

2

Per verificare l'esistenza di un indirizzo e-mail, il server può eseguire il ping di tale indirizzo e-mail su un server SMTP corrispondente per convalidarlo. Ci sono alcuni passaggi coinvolti. Supponendo che l'utente abbia inviato (per esempio) un indirizzo Gmail, e supponendo che sia la tua applicazione Web che sta facendo la convalida, tu farei quanto segue:

Passaggio 1: invia un comando nslookup:

nslookup  –type=mx gmail.com

Questo comando nslookup interrogherà i name server per quel dominio. Dato che abbiamo specificato il tipo come MX, il nostro comando estrae ed elenca i record MX del dominio di posta elettronica. Sostituisci gmail.com con il dominio dell'indirizzo email che stai cercando di verificare.

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

Passaggio 2: Come avrai notato nell'output di nslookup, non è raro avere più record MX per un dominio. Scegli uno dei server elencati nei record MX, forse quello con il numero di livello di preferenza più basso (nel nostro esempio, gmail-smtp-in.l.google.com), e "fingi" di inviare un messaggio di test a tale server dalla tua applicazione Web:

Connessione al server di posta tramite telnet:

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

Saluta l'altro server:

HELO

Identificatevi con un indirizzo email fittizio:

mail from:<[email protected]>

Specificare l'indirizzo e-mail dell'utente che si sta tentando di verificare:

rcpt to:<[email protected]>

Passaggio 3: controlla la risposta per determinare la validità dell'indirizzo e-mail. La risposta per il comando 'rcpt to' ti darà un'idea se l'indirizzo e-mail dell'utente è valido o meno. Se l'indirizzo esiste, la risposta sarà:

OK

Altrimenti, la risposta sarà un errore 550, come ad esempio:

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

... o questo:

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

La risposta sopra è stata adattata e presa in prestito da qui:

link

Come farlo in 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';
}

Esempio di PHP di cui sopra:

link

    
risposta data 12.02.2015 - 21:29
fonte
2

Ci sono due modi principali per controllare un indirizzo email: controlla la validità e controlla l'esistenza.

Il controllo della validità si ottiene verificando se l'indirizzo e-mail segue la sintassi corretta. C'è una serie di regole per la validità che ogni email deve seguire. Sono indicati nella RFC 3696 . C'è una "semplice" espressione regolare che può convalidare un'email:

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

Questo è semplice e veloce, può essere fatto offline, ma non controlla se l'email è reale e l'utente che fornisce l'email ne è il vero proprietario.

D'altro canto, il controllo dell'esistenza della posta elettronica avviene generalmente inviando un link per l'e-mail fornita o inviando un'e-mail con un contenuto speciale e richiedendo all'utente di rispondere a tale e-mail.

Ciò richiede più risorse, perché è necessario per tenere traccia dell'email utilizzata e del token creato, e l'invio o la ricezione di e-mail. D'altra parte, conferma che l'e-mail è valida, esiste e l'utente che ne rivendica il possesso ne è il vero proprietario.

Ma non penso che non riuscire a convalidare un indirizzo email sia una vulnerabilità. Potrebbe essere una svista, ma difficilmente una vulnerabilità.

    
risposta data 12.02.2015 - 21:08
fonte

Leggi altre domande sui tag