{"id":10147,"date":"2018-09-26T09:56:32","date_gmt":"2018-09-26T08:56:32","guid":{"rendered":"https:\/\/www.verificaremails.com\/come-convalidare-unemail-in-php-in-modo-sicuro\/"},"modified":"2025-02-05T12:44:45","modified_gmt":"2025-02-05T11:44:45","slug":"come-convalidare-unemail-in-php-in-modo-sicuro","status":"publish","type":"post","link":"https:\/\/www.verificaremails.com\/it\/come-convalidare-unemail-in-php-in-modo-sicuro\/","title":{"rendered":"Come convalidare un&#8217;email in php in modo sicuro"},"content":{"rendered":"<p>In questo articolo vedremo come convalidare un&#8217;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 <a href=\"https:\/\/www.verificaremails.com\/it\/\" target=\"_blank\" rel=\"noopener\">verificamails.com\/it<\/a>, anche se lo stesso sistema funziona per qualsiasi servizio di convalida delle email.<\/p>\n<p>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\u00f9 o meno sofisticati dei domini e dei record MX. <\/p>\n<p>Se hai bisogno di convalidare un&#8217;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&#8217;email con le loro liste di trappole per lo spam per verificare in modo affidabile l&#8217;email.<\/p>\n<h2>Come funziona la convalida delle email in php<\/h2>\n<p>Quasi tutti i servizi funzionano allo stesso modo: attraverso un&#8217;API \u00e8 possibile convalidare l&#8217;email in tempo reale; a tal fine viene solitamente effettuata una chiamata Curl, in cui viene invocato il servizio e l&#8217;email viene trasmessa insieme al token del servizio. Puoi trovare una documentazione dettagliata in<a href=\"https:\/\/www.verificaremails.com\/it\/validar-email-php-forma-segura\/index-html\/\" target=\"_blank\" rel=\"noopener\">&#8220;Documentazione verifica email<\/a>&#8220;. <\/p>\n<h5 style=\"padding-left: 30px;\"><em>Nel caso del servizio verificamails.com la chiamata PHP \u00e8:<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>$email = &#8220;test@example.com&#8221;;<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>$key = &#8220;your_api_key&#8221;;<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>$url = &#8220;https:\/\/app.verificaremails.com\/api\/verifyEmail?secret=&#8221;.$key.&#8221;&amp;email=&#8221;.$email;<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>$ch = curl_init();<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>curl_setopt($ch, CURLOPT_URL, $url);<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>$response = curl_exec($ch);<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>echo $response;<\/em><\/h5>\n<h5 style=\"padding-left: 30px;\"><em>curl_close($ch);<\/em><\/h5>\n<p>&nbsp;<\/p>\n<p>Come puoi vedere, la chiamata \u00e8 molto semplice. Se la convalida viene eseguita nei nostri servizi di BackOffice, la &#8220;chiave&#8221; o token per eseguire la convalida rimarr\u00e0 segreta durante tutto il processo. <\/p>\n<p>Possiamo modificare il nostro script in modo che quando l&#8217;utente clicca su &#8220;invia&#8221; nel nostro modulo di registrazione, l&#8217;e-mail venga convalidata. Questo meccanismo \u00e8 efficace e sicuro; l&#8217;unico inconveniente \u00e8 che la convalida viene effettuata una volta che l&#8217;utente ha completato il modulo. <\/p>\n<p>La convalida degli emuli tramite API in tempo reale richiede in media circa 2 secondi, anche se si tratta di una verifica rapida, non \u00e8 immediata.<\/p>\n<p>Un miglioramento di questo metodo potrebbe essere quello di convalidare l&#8217;indirizzo e-mail mentre l&#8217;utente compila gli altri campi del modulo. Se rileviamo che l&#8217;indirizzo non \u00e8 valido, possiamo indicarlo nel modulo senza doverlo inviare. Migliorando l&#8217;usabilit\u00e0 del servizio e aumentando la conversione delle registrazioni.  <\/p>\n<p>Da un punto di vista tecnico, dobbiamo solo aggiungere qualche riga di JavaScript al nostro codice PHP.<\/p>\n<h2>Rischi della convalida di un&#8217;email in PHP con Java Script<\/h2>\n<p>Sebbene la chiamata di cui sopra sia molto semplice da implementare, comporta un rischio. Voglio ricordarti che per convalidare l&#8217;email facciamo una chiamata Curl, in cui passiamo al servizio di convalida delle email l&#8217;email da verificare e il token del servizio. Se un utente cattura il token, pu\u00f2 convalidare le e-mail.  <\/p>\n<h2>Come convalidare in modo sicuro un&#8217;email con PHP e JavaScript<\/h2>\n<p>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. <\/p>\n<p>La libreria utilizza 4 file:<\/p>\n<h5 style=\"padding-left: 30px;\">Indice.html<\/h5>\n<h5 style=\"padding-left: 30px;\">Verifyemails.php<\/h5>\n<h5 style=\"padding-left: 30px;\">Verifyemails_encrypt.php<\/h5>\n<h5 style=\"padding-left: 30px;\">Verifyemails-core.js<\/h5>\n<p>&nbsp;<\/p>\n<p>Quello che facciamo \u00e8 utilizzare una chiave criptata nei file in cui vogliamo eseguire la convalida in tempo reale tramite Ajax. Anche se si ottiene questa chiave, sar\u00e0 poco utile perch\u00e9 al momento della verifica viene effettuato un controllo del dominio che effettua la chiamata. <\/p>\n<p>Per generare la chiave criptata eseguiamo &#8220;verifyemails_encrypt.php&#8221; nei campi:<\/p>\n<h5 style=\"padding-left: 30px;\">define(&#8216;TOKEN_KEY&#8217;, &#8216;a3_?Kd&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">define(&#8216;TOKEN_IV&#8217;, &#8216;v7$!kh&#8217;);<\/h5>\n<p>indicheremo le chiavi per criptare il token del servizio di convalida delle email.<\/p>\n<p>Nel file index.html, che \u00e8 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. <\/p>\n<p>Il file verifymails.php definisce 4 parametri importanti:<\/p>\n<h5 style=\"padding-left: 30px;\">define(&#8216;VALID_REFERER&#8217;, &#8216;localhost&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">Indica da quale localit\u00e0 siamo autorizzati a eseguire le convalide.<\/h5>\n<h5 style=\"padding-left: 30px;\">define(&#8216;VALIDATE_URL&#8217;, &#8216;https:\/\/app.verificaremails.com\/&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">Mostra dove si trova l&#8217;applicazione di convalida delle email<\/h5>\n<h5 style=\"padding-left: 30px;\">define(&#8216;TOKEN_KEY&#8217;, &#8216;a2_?Kd&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">define(&#8216;TOKEN_IV&#8217;, &#8216;v6$!kh&#8217;);<\/h5>\n<p>Questi sono i valori che utilizziamo per criptare la chiave del servizio di verifica. Questa chiave criptata \u00e8 quella che utilizzeremo nel file &#8220;verificaremails-core.js&#8221;. Il valore di questi campi deve corrispondere a quelli definiti in &#8220;verificaremails_encrypt.php&#8221;.  <\/p>\n<p>Per determinare se la chiamata \u00e8 corretta, alla fine del file verifyingemails.php abbiamo un if in cui definiamo con quali criteri un indirizzo \u00e8 corretto:<\/p>\n<h5 style=\"padding-left: 30px;\">if ($response == &#8216;ok&#8217; o $response == &#8216;ok_for_all&#8217; o $response == &#8216;accept_all&#8217;) {<\/h5>\n<h5 style=\"padding-left: 30px;\">echo &#8216;1&#8217;;<\/h5>\n<h5 style=\"padding-left: 30px;\">} else {<\/h5>\n<h5 style=\"padding-left: 30px;\">echo &#8216;0&#8217;;<\/h5>\n<p>Per conoscere tutti i codici di errore puoi visitare la pagina  <a href=\"https:\/\/www.verificaremails.com\/it\/validar-email-php-forma-segura\/index-html\/#section\/Guia-Resultados\" target=\"_blank\" rel=\"noopener\">Guida ai risultati per la convalida delle email  <\/a><\/p>\n<p>Il valore di convalida viene passato al file &#8220;verificamails-core.js&#8221; che a sua volta lo passa a index.html che contiene il modulo. Una volta che l&#8217;utente ha inserito l&#8217;indirizzo e-mail nel campo con id=&#8221;email&#8221;, viene effettuata una chiamata Ajax mentre l&#8217;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.   <\/p>\n<p>So che l&#8217;argomento pu\u00f2 sembrare complicato, ma una volta che hai i file, usarli \u00e8 molto semplice, anche se vuoi portarli in altri linguaggi come Ruby, Python o Java.<\/p>\n<p>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&#8217;implementazione. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo vedremo come convalidare un&#8217;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 &#8230; <a title=\"Come convalidare un&#8217;email in php in modo sicuro\" class=\"read-more\" href=\"https:\/\/www.verificaremails.com\/it\/come-convalidare-unemail-in-php-in-modo-sicuro\/\" aria-label=\"Per saperne di pi\u00f9 su Come convalidare un&#8217;email in php in modo sicuro\">Per saperne di pi\u00f9<\/a><\/p>\n","protected":false},"author":1,"featured_media":2554,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[986],"tags":[],"class_list":["post-10147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-verifica-mail-api"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/posts\/10147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/comments?post=10147"}],"version-history":[{"count":0,"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/posts\/10147\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/media\/2554"}],"wp:attachment":[{"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/media?parent=10147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/categories?post=10147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.verificaremails.com\/it\/wp-json\/wp\/v2\/tags?post=10147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}