logo
logo

Come convalidare un’email in php in modo sicuro

In questo articolo vedremo come convalidare un’email in PHP in modo sicuro, impedendo di ottenere il token del nostro servizio di verifica email. Negli esempi utilizzeremo il servizio di convalida delle email di verificamails.com/it, anche se lo stesso sistema funziona per qualsiasi servizio di convalida delle email.

Attualmente esistono una moltitudine di servizi che consentono di convalidare le e-mail. Le soluzioni basate su script, pur essendo un primo passo, consentono di convalidare le email solo attraverso regole sintattiche o eseguendo controlli più o meno sofisticati dei domini e dei record MX.

Se hai bisogno di convalidare un’email in modo affidabile, dovrai utilizzare 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 con le loro liste di trappole per lo spam 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 l’utente clicca su “invia” nel nostro modulo di registrazione, l’e-mail venga convalidata. Questo meccanismo è efficace e sicuro; l’unico inconveniente è che la convalida viene effettuata una volta che l’utente ha completato il modulo.

La convalida degli emuli 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 potrebbe essere quello di convalidare l’indirizzo e-mail mentre l’utente compila 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 solo aggiungere qualche riga 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. Anche se gli esempi di codice che illustreremo sono 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 “verifyemails_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, che è 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 inseriamo il token criptato e indichiamo dove si trovano i file che eseguono la convalida, verificaremails.php.

Il file verifymails.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’;

Per conoscere tutti i codici di errore puoi visitare la pagina Guida ai risultati per la convalida delle email

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 la latenza nel processo di verifica delle e-mail, proteggiamo il token da eventuali furti.

So che l’argomento 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...