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 --->
0 responses to “Como prever spam em formulários ColdFusion sem uso de Captcha”