«

»

Oct 15

Print this Post

Como prever spam em formulários ColdFusion sem uso de Captcha

Sumário da palestra de Michael Evangelista, no ColdFusion Meetup de 15 de Outubro, 2009.
A gravação da palestra em ingles se encontra aqui: http://www.meetup.com/coldfusionmeetup/pages/Recordings_of_the_ColdFusion_Meetup-2009/
Página de demonstração: http://www.gowestwebdesign.com/demos/contact-form/index.cfm

Cansado de Spam ? (Quem não está?)

Não importa o quão bom são os nossos filtros, ou como podemos ser cuidadosos em fazer os nossos endereços de e-mail públicos, algumas coisas nojentas ainda passam.

Mas há uma maneira de lutar de volta, defendendo os formulários de contato de seu site e outras entradas de e-mail nos formulários, sem que seus visitantes façam marabailismo, resolvam quebra-cabeças ou leiam letras embaralhadas (captcha) apenas para deixar uma nota para voce.

Formulário

<!--- INCICIO --->
<cfif isDefined('form.senderFrom')>
     <!--- VALIDANDO CAMPOS --->
     <!--- checar email --->
     <cfif NOT len(trim(form.senderFrom)) gt 6 or NOT isValid('email',form.senderFrom)>
          <cfset request.formError = 'Entre com um email válido'>
          <!--- mensagem --->
     <cfelseif NOT len(trim(form.senderMessage))>
          <cfset request.formError = 'Certifique-se de incluir uma mensagem'>
          <!--- honeypot --->
     <cfelseif len(trim(form.email_address))>
          <cfset request.formError = 'Spam!! «br />(Sai fora!)'»
     </cfif>
     <!--- /end VALIDANDO CAMPOS --->
     <!--- CHECAR CONTEUDO INDESEJADO --->
     <!--- loop sobre variaveis do formulario --->
     <cfloop index="f" list="#form.fieldnames#">
          <!--- define variavel para valor do campo --->
          <cfset value="#evaluate('form.#f#')#">
          <!--- PALAVRAS BANIDAS --->
          <cfset bannedWordsList = "herring,albatross,dragon,grail,lumberjack">
          <!--- loop sobre a lista de palavras banidas para verificar a existencia de alguma no texto--->
          <cfloop list="#bannedWordsList#" delimiters="," index="w">
               <cfif FindNoCase(w,value)>
                    <cfset request.formerror="«br />Perdão? <br />O que dói em voce?"»
                    <cfbreak>
               </cfif>
          </cfloop>
          <!--- / end PALAVRAS BANIDAS --->
          <!--- BLOQUEAR HTML --->
          <cfset leftChar = '«' >
          <cfset rightChar = '>' »
          <!--- Pesquisar em todos os caracteres do nosso conteúdo --->
          <cfif findNoCase(leftChar, value) AND findNoCase(rightChar, value)>
               <cfset request.formerror = "Somente texto, por favor, não HTML">
               <cfbreak>
          </cfif>
          <!--- / end BLOQUEAR HTML --->
     </cfloop>
     <!--- / end CHECAR CONTEUDO INDESEJADO --->
     <fieldset>
          <legend>
               <cfif isDefined('request.formerror') and len(trim(request.formerror))>
                    Erro!
               <cfelse>
                    Obrigado
               </cfif>
          </legend>
          <!--- EXIBIR RESPOSTA --->
          <cfif isDefined('request.formerror') and len(trim(request.formerror))>
               <p><strong>ERROR: <cfoutput>#request.formerror#</cfoutput></strong></p>
               <p>Enviar <a href="javascript:history.back()">Voltar</a> e tentar de novo</p>
          <cfelse>
               <p>Obrigado. <br /><br />Sua mensagem foi enviada e responderemos em breve!</p>
          </cfif>
          <p> </p>
     </fieldset>
     <!--- SE FORMULARIO NAO SUBMETIDO (exibe o formulario) --->
<cfelse>
     <fieldset>
          <legend>Sample Contact Form</legend>
          <cfform name="contactForm" action="#cgi.SCRIPT_NAME#" method="post">
               <div>
                    <label for="senderName">Name:  </label>
                    <cfinput type="text" name="senderName" size="48" value="" required="true" message="Nome requerido">
               </div>
               <div>
                    <label for="senderFrom">Email:</label>
                    <cfinput type="text" name="senderFrom" size="48" value="" required="true" validate="email" message="Email requerido">
               </div>
               <div>
                    <label for="senderPhone">Phone:  </label>
                    <input type="text" name="senderPhone" size="20" value="">
               </div>
               <div>
                     <label for="senderPhone">Your Message:</label>
                     <textarea name="senderMessage" cols="30" rows="12" style="width:310px;"></textarea>
               </div>
               <div style="text-align:center">
                    <input type="submit" value="Submit">
               </div>
               <div id="email_wrapper">
                    <input type="text" name="email_address" value="" size="20">
               </div>
          </cfform>
     </fieldset>
</cfif>
<!--- / end IF FORM SUBMITTED --->

 

Permanent link to this article: https://ensina.me/coldfusion/como-prever-spam-em-formularios-coldfusion-sem-uso-de-captcha/

Leave a Reply