logo

Come convalidare un’email in php in modo sicuro

In questo articolo vedremo come convalidare un’email in PHP in modo sicuro, impedendo che il token del nostro servizio di verifica email venga acquisito.
Negli esempi utilizzeremo il servizio di convalida delle e-mail di verificamails.com, anche se lo stesso sistema funziona per qualsiasi servizio di convalida delle e-mail.
Attualmente esistono numerosi servizi che consentono di convalidare le e-mail.
Le soluzioni basate su script, sebbene siano un primo passo, ti permettono di convalidare le email solo attraverso regole di sintassi o eseguendo controlli più o meno sofisticati dei domini e dei record MX.
Se hai bisogno di convalidare un’email in modo affidabile, dovrai ricorrere a un servizio professionale di convalida delle email. Oltre ai controlli di cui sopra, i servizi professionali eseguono una simulazione approfondita della connessione o controllano l’email rispetto alle loro liste di spam trap per verificare in modo affidabile l’email.

Come funziona la convalida delle email in php

Quasi tutti i servizi funzionano allo stesso modo: attraverso un’API è possibile convalidare l’email in tempo reale; a tal fine viene solitamente effettuata una chiamata Curl, in cui viene invocato il servizio e l’email viene trasmessa insieme al token del servizio.
Puoi trovare una documentazione dettagliata in ”
Documentazione verifica email“.

Nel caso del servizio verificamails.com la chiamata PHP è:
$email = “[email protected]”;
$key = “your_api_key”;
$url = “https://app.verificaremails.com/api/verifyEmail?secret=”.$key.”&email=”.$email;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
$response = curl_exec($ch);
echo $response;
curl_close($ch);

Come puoi vedere, la chiamata è molto semplice.
Se la convalida viene eseguita nei nostri servizi di BackOffice, la “chiave” o token per eseguire la convalida rimarrà segreta durante tutto il processo.
Possiamo modificare il nostro script in modo che quando clicchiamo su “invia” nel nostro modulo di registrazione, venga eseguita la convalida dell’e-mail.
Questo meccanismo è efficace e sicuro; l’unico inconveniente è che la convalida viene effettuata una volta che l’utente ha completato il modulo.
La convalida delle email tramite API in tempo reale richiede in media circa 2 secondi, anche se si tratta di una verifica rapida, non è immediata.
Un miglioramento di questo metodo sarebbe quello di convalidare l’email mentre l’utente sta completando gli altri campi del modulo.
Se rileviamo che l’indirizzo non è valido, possiamo indicarlo nel modulo senza doverlo inviare.
Migliorando l’usabilità del servizio e aumentando la conversione delle registrazioni.
Da un punto di vista tecnico, dobbiamo aggiungere solo poche righe di JavaScript al nostro codice PHP.

Rischi della convalida di un’email in PHP con Java Script

Sebbene la chiamata di cui sopra sia molto semplice da implementare, comporta un rischio.
Voglio ricordarti che per convalidare l’email facciamo una chiamata Curl, in cui passiamo al servizio di convalida delle email l’email da verificare e il token del servizio.
Se un utente cattura il token, può convalidare le e-mail.

Come convalidare in modo sicuro un’email con PHP e JavaScript

Su verificaremails.com abbiamo sviluppato una libreria per evitare questo rischio.
Sebbene gli esempi di codice che illustreremo siano esplicitamente dedicati a Verificaremails, possono funzionare anche con qualsiasi altro servizio.
La libreria utilizza 4 file:

Indice.html
Verifyemails.php
Verifyemails_encrypt.php
Verifyemails-core.js

Quello che facciamo è utilizzare una chiave criptata nei file in cui vogliamo eseguire la convalida in tempo reale tramite Ajax.
Anche se si ottiene questa chiave, sarà poco utile perché al momento della verifica viene effettuato un controllo del dominio che effettua la chiamata.
Per generare la chiave criptata eseguiamo “verificamails_encrypt.php” nei campi:

define(‘TOKEN_KEY’, ‘a3_?Kd’);
define(‘TOKEN_IV’, ‘v7$!kh’);

indicheremo le chiavi per criptare il token del servizio di convalida delle email.
Nel file index.html, il file che contiene il nostro modulo, oltre a utilizzarlo per acquisire i dati, viene effettuata una chiamata a verificaremails-core.js.
In questo file viene inserito il token crittografato e vengono indicati i file che eseguono la convalida, verificaremails.php Il file verificaremails.php definisce 4 parametri importanti:

define(‘VALID_REFERER’, ‘localhost’);
Indica da quale località siamo autorizzati a eseguire le convalide.
define(‘VALIDATE_URL’, ‘https://app.verificaremails.com/’);
Mostra dove si trova l’applicazione di convalida delle email
define(‘TOKEN_KEY’, ‘a2_?Kd’);
define(‘TOKEN_IV’, ‘v6$!kh’);

Questi sono i valori che utilizziamo per criptare la chiave del servizio di verifica.
Questa chiave criptata è quella che utilizzeremo nel file “verificaremails-core.js”.
Il valore di questi campi deve corrispondere a quelli definiti in “verificaremails_encrypt.php”.
Per determinare se la chiamata è corretta, alla fine del file verifyingemails.php abbiamo un if in cui definiamo con quali criteri un indirizzo è corretto:

if ($response == ‘ok’ o $response == ‘ok_for_all’ o $response == ‘accept_all’) {
echo ‘1’;
} else {
echo ‘0’;

Il valore di convalida viene passato al file “verificamails-core.js” che a sua volta lo passa a index.html che contiene il modulo.
Una volta che l’utente ha inserito l’indirizzo e-mail nel campo con id=”email”, viene effettuata una chiamata Ajax mentre l’utente compila gli altri campi.
In background viene eseguita la convalida, in modo che prima di inviare i dati si possa sapere se sono validi.
Oltre a ridurre le latenze nel processo di verifica delle e-mail, proteggiamo il token dal furto.
So che può sembrare complicato, ma una volta che hai i file, usarli è molto semplice, anche se vuoi portarli in altri linguaggi come Ruby, Python o Java.
Se sei un cliente di verificamails e vuoi convalidare le email tramite JavaScript, contatta il nostro team di assistenza per richiedere i file per convalidare le email in PHP in modo sicuro.
Se preferisci, possiamo anche occuparci dell’implementazione.

- MIGLIORARE LA QUALITÀ DEI VOSTRI DATI IN MODO SEMPLICE -

VERIFICARE LE EMAIL
TELEFONI,
INDIRIZZI POSTALI
NOMI E COGNOMI...