{"id":10149,"date":"2018-09-26T09:56:32","date_gmt":"2018-09-26T08:56:32","guid":{"rendered":"https:\/\/www.verificaremails.com\/como-validar-um-e-mail-em-php-de-forma-segura\/"},"modified":"2025-02-06T19:24:31","modified_gmt":"2025-02-06T18:24:31","slug":"como-validar-um-e-mail-em-php-de-forma-segura","status":"publish","type":"post","link":"https:\/\/www.verificaremails.com\/pt-br\/como-validar-um-e-mail-em-php-de-forma-segura\/","title":{"rendered":"Como validar um e-mail em php de forma segura"},"content":{"rendered":"<p>Neste artigo, veremos como validar um e-mail em PHP de forma segura, impedindo que eles obtenham o token do nosso servi\u00e7o de verifica\u00e7\u00e3o de e-mail.<br \/>\nNos exemplos, usaremos o servi\u00e7o para validar e-mails do <a href=\"https:\/\/www.verificaremails.com\/pt-br\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.verificaremails.com\/pt-br\/<\/a>, embora o mesmo sistema funcione para qualquer servi\u00e7o de valida\u00e7\u00e3o de e-mail.<br \/>\nAtualmente, h\u00e1 v\u00e1rios servi\u00e7os que permitem que voc\u00ea valide e-mails.<br \/>\nAs solu\u00e7\u00f5es baseadas em script, embora sejam uma primeira etapa, s\u00f3 permitem que voc\u00ea valide o e-mail por meio de regras de sintaxe ou executando verifica\u00e7\u00f5es mais ou menos sofisticadas de dom\u00ednio e registro MX.<br \/>\nSe precisar validar um e-mail de forma confi\u00e1vel, voc\u00ea ter\u00e1 de usar um servi\u00e7o profissional de valida\u00e7\u00e3o de e-mail. Al\u00e9m das verifica\u00e7\u00f5es acima, os servi\u00e7os profissionais realizam uma simula\u00e7\u00e3o completa da conex\u00e3o ou verificam o e-mail em suas listas de spam trap para verificar o e-mail de forma confi\u00e1vel.<\/p>\n<h2>Como funciona a valida\u00e7\u00e3o de e-mail em php<\/h2>\n<p>Quase todos os servi\u00e7os funcionam da mesma maneira: por meio de uma API, podemos validar o e-mail em tempo real. Para isso, geralmente \u00e9 feita uma chamada Curl, em que o servi\u00e7o \u00e9 chamado e o e-mail \u00e9 transmitido junto com o token do servi\u00e7o.<br \/>\nVoc\u00ea pode encontrar a documenta\u00e7\u00e3o detalhada em &#8221;<br \/>\n<a href=\"https:\/\/www.verificaremails.com\/pt-br\/validar-email-php-forma-segura\/index-html\/\" target=\"_blank\" rel=\"noopener\">Documenta\u00e7\u00e3o verificar e-mail<\/a>&#8220;.<\/p>\n<h5 style=\"padding-left: 30px;\"><em>No caso do servi\u00e7o verificaremails.com, a chamada PHP \u00e9:<\/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>Como voc\u00ea pode ver, a chamada \u00e9 muito simples.<br \/>\nSe a valida\u00e7\u00e3o for feita em nossos servi\u00e7os de BackOffice, a &#8220;chave&#8221; ou o token para realizar a valida\u00e7\u00e3o permanecer\u00e1 em segredo durante todo o processo.<br \/>\nPodemos modificar nosso script para que, quando clicarmos em &#8220;enviar&#8221; em nosso formul\u00e1rio de registro, a valida\u00e7\u00e3o do e-mail seja executada.<br \/>\nEsse mecanismo \u00e9 eficaz e seguro; a \u00fanica desvantagem \u00e9 que a valida\u00e7\u00e3o \u00e9 feita depois que o usu\u00e1rio preenche o formul\u00e1rio.<br \/>\nA valida\u00e7\u00e3o de e-mails via API em tempo real geralmente leva em m\u00e9dia cerca de 2 segundos, embora seja uma verifica\u00e7\u00e3o r\u00e1pida, n\u00e3o \u00e9 imediata.<br \/>\nUm aprimoramento desse m\u00e9todo seria validar o e-mail enquanto o usu\u00e1rio preenche o restante dos campos do formul\u00e1rio.<br \/>\nSe detectarmos que o endere\u00e7o \u00e9 inv\u00e1lido, poderemos indicar isso no formul\u00e1rio sem precisar envi\u00e1-lo.<br \/>\nMelhorando a usabilidade do servi\u00e7o e aumentando a convers\u00e3o de registros.<br \/>\nDo ponto de vista t\u00e9cnico, s\u00f3 precisamos adicionar algumas linhas de JavaScript ao nosso c\u00f3digo PHP.<\/p>\n<h2>Riscos da valida\u00e7\u00e3o de um e-mail em PHP com Java Script<\/h2>\n<p>Embora a chamada acima seja muito simples de implementar, ela apresenta um risco.<br \/>\nQuero lembrar a voc\u00ea que, para validar o e-mail, fazemos uma chamada Curl, em que passamos para o servi\u00e7o de valida\u00e7\u00e3o de e-mail o e-mail a ser verificado e o token do servi\u00e7o.<br \/>\nSe um usu\u00e1rio capturar esse token, ele poder\u00e1 validar os e-mails.<\/p>\n<h2>Como validar um e-mail de forma segura com PHP e JavaScript<\/h2>\n<p>No verificaremails.com, desenvolvemos uma biblioteca para evitar esse risco.<br \/>\nEmbora os exemplos de c\u00f3digo que explicaremos sejam explicitamente para o Verificaremails, eles tamb\u00e9m podem funcionar com qualquer outro servi\u00e7o.<br \/>\nA biblioteca usa 4 arquivos:<\/p>\n<h5 style=\"padding-left: 30px;\">\u00cdndice.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>O que fazemos \u00e9 usar uma chave criptografada nos arquivos em que queremos executar a valida\u00e7\u00e3o em tempo real via Ajax.<br \/>\nMesmo que voc\u00ea obtenha essa chave, ela ser\u00e1 de pouca utilidade, pois no momento da verifica\u00e7\u00e3o \u00e9 realizada uma verifica\u00e7\u00e3o do dom\u00ednio que faz a chamada.<br \/>\nPara gerar a chave criptografada, executamos &#8220;verificaremails_encrypt.php&#8221; nos campos:<\/p>\n<h5 style=\"padding-left: 30px;\">definir(&#8216;TOKEN_KEY&#8217;, &#8216;a3_?Kd&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">definir(&#8216;TOKEN_IV&#8217;, &#8216;v7$!kh&#8217;);<\/h5>\n<p>indicaremos as chaves para criptografar o token do servi\u00e7o de valida\u00e7\u00e3o de e-mail.<br \/>\nNo arquivo index.html, o arquivo que cont\u00e9m nosso formul\u00e1rio, al\u00e9m de us\u00e1-lo para capturar os dados, \u00e9 feita uma chamada para o verificaremails-core.js.<br \/>\nNesse arquivo \u00e9 onde colocamos o token criptografado e indicamos onde est\u00e3o os arquivos que executam a valida\u00e7\u00e3o, verificaremails.php O arquivo verificaremails.php define quatro par\u00e2metros importantes:<\/p>\n<h5 style=\"padding-left: 30px;\">definir(&#8216;VALID_REFERER&#8217;, &#8216;localhost&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">Indica de qual local estamos autorizados a realizar valida\u00e7\u00f5es.<\/h5>\n<h5 style=\"padding-left: 30px;\">definir(&#8216;VALIDATE_URL&#8217;, &#8216;https:\/\/app.verificaremails.com\/&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">Mostrar onde est\u00e1 localizado o aplicativo de valida\u00e7\u00e3o de e-mail<\/h5>\n<h5 style=\"padding-left: 30px;\">definir(&#8216;TOKEN_KEY&#8217;, &#8216;a2_?Kd&#8217;);<\/h5>\n<h5 style=\"padding-left: 30px;\">definir(&#8216;TOKEN_IV&#8217;, &#8216;v6$!kh&#8217;);<\/h5>\n<p>Esses s\u00e3o os valores que usamos para criptografar a chave do servi\u00e7o de verifica\u00e7\u00e3o.<br \/>\nEssa chave criptografada \u00e9 a que usaremos no arquivo &#8220;verificaremails-core.js&#8221;.<br \/>\nO valor desses campos deve corresponder \u00e0queles definidos em &#8220;verificaremails_encrypt.php&#8221;.<br \/>\nPara determinar se a chamada est\u00e1 correta, no final do arquivo verifyingemails.php temos um if em que definimos com quais crit\u00e9rios um endere\u00e7o est\u00e1 correto:<\/p>\n<h5 style=\"padding-left: 30px;\">Se ($response == &#8216;ok&#8217; ou $response == &#8216;ok_for_all&#8217; ou $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>O valor <a href=\"https:\/\/www.verificaremails.com\/pt-br\/validar-email-php-forma-segura\/index-html\/#section\/Guia-Resultados\" target=\"_blank\" rel=\"noopener\">da valida\u00e7\u00e3o <\/a> \u00e9 passado para o arquivo &#8220;verificaremails-core.js&#8221; que, por sua vez, o passa para index.html, que cont\u00e9m o formul\u00e1rio.<br \/>\nDepois que o usu\u00e1rio preenche o endere\u00e7o de e-mail no campo com id=&#8221;email&#8221;, a chamada Ajax \u00e9 feita enquanto o usu\u00e1rio preenche o restante dos campos.<br \/>\nEm segundo plano, a valida\u00e7\u00e3o est\u00e1 sendo feita, de modo que, antes de enviar os dados, podemos saber se eles s\u00e3o v\u00e1lidos.<br \/>\nAl\u00e9m de reduzir as lat\u00eancias no processo de verifica\u00e7\u00e3o de e-mail, tamb\u00e9m protegemos o token contra roubo.<br \/>\nSei que pode parecer complicado, mas depois que voc\u00ea tem os arquivos, us\u00e1-los \u00e9 muito simples, mesmo que queira port\u00e1-los para outras linguagens, como Ruby, Python ou Java.<br \/>\nSe voc\u00ea \u00e9 cliente do verificaremails e deseja validar e-mails via JavaScript, entre em contato com nossa equipe de suporte para solicitar os arquivos para validar e-mails em PHP com seguran\u00e7a.<br \/>\nSe voc\u00ea preferir, tamb\u00e9m podemos fazer a implementa\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, veremos como validar um e-mail em PHP de forma segura, impedindo que eles obtenham o token do nosso servi\u00e7o de verifica\u00e7\u00e3o de e-mail. Nos exemplos, usaremos o servi\u00e7o para validar e-mails do https:\/\/www.verificaremails.com\/pt-br\/, embora o mesmo sistema funcione para qualquer servi\u00e7o de valida\u00e7\u00e3o de e-mail. Atualmente, h\u00e1 v\u00e1rios servi\u00e7os que permitem que voc\u00ea &#8230; <a title=\"Como validar um e-mail em php de forma segura\" class=\"read-more\" href=\"https:\/\/www.verificaremails.com\/pt-br\/como-validar-um-e-mail-em-php-de-forma-segura\/\" aria-label=\"Read more about Como validar um e-mail em php de forma segura\">Ler mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":10150,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1072],"tags":[],"class_list":["post-10149","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-verificar-o-correio-eletronico-da-api"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/posts\/10149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/comments?post=10149"}],"version-history":[{"count":0,"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/posts\/10149\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/media\/10150"}],"wp:attachment":[{"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/media?parent=10149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/categories?post=10149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.verificaremails.com\/pt-br\/wp-json\/wp\/v2\/tags?post=10149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}