2010-02-09 26 views
31

Quiero agregar un simple formulario de contacto a mi sitio web para que los clientes puedan contactarme fácilmente.Prevención/reducción de spam - ¿Formulario de contacto?

<form> 
    NAME 
    <input type='text' name='name' /> 
    EMAIL 
    <input type='text' name='email' /> 
    MESSAGE 
    <textarea name='message' /> 
    <input type='submit' /> 
</form> 

Este formulario simplemente me enviará por correo electrónico el mensaje del cliente.

Pero, también quiero reducir (no, no estoy diciendo eliminar, pero al menos reducir), SPAM.

He investigado el uso de CAPTCHA pero, en última instancia, no quiero impedir que el cliente tenga que completar información adicional.

Cualquier idea de un buen método simple de prevención/reducción de spam que podría utilizar para mi formulario de contacto.

+1

Creo que CAPTCHA es una buena idea, no es mucha información adicional. Personalmente, desarrollé un formulario de contacto y recibí, al menos, 300 correos electrónicos por día de spambots, lamento no integrar alguna funcionalidad de CAPTCHA. –

+0

También vea http://stackoverflow.com/questions/485106/how-do-i-protect-my-forum-against-spam para obtener más ideas. – Wim

+0

Excelentes ideas/comentarios en [esta publicación de StackOverflow] (http://stackoverflow.com/questions/2387496/how-to-prevent-robots-from-automatically-filling-up-a-form) también. – Beepye

Respuesta

-2

Puede simplemente registrar IP ($ _SERVER ['REMOTE_ADDR']) y prohibir la revalidación con esta IP durante 1 minuto o, más exactamente, iniciar una sesión, otorgar un ID de visitante y prohibir la revalidación de 1 minuto (o más, pero a bot no le gusta esperar).

+0

Los bots normalmente no guardan cookies, por lo que la sesión no funcionará. Además, la mayoría de los bots se ejecutan en PC cliente pirateados, lo que conduce a un suministro interminable de nuevas direcciones IP. Nunca he tenido problemas con una gran cantidad de envíos de spam desde una sola dirección IP, siempre es la acumulación en el tiempo de muchos clientes diferentes lo que causa problemas ... – Wim

+0

Tienes razón Wim: es una buena práctica evitar la presentación múltiple – Alysko

4

Utilice la cuenta de correo de Google o Yahoo. Tienen buenos filtros anti-SPAM.

+0

Esta es una buena idea, gmail admite el reenvío automático de correos electrónicos ¿no? Esto podría funcionar bien. Probablemente la implementación más fácil también Y se arriesga a perder clientes potenciales debido a la frustración de captcha. – sam

+0

+1; o cualquier otro filtro de spam de la bandeja de entrada. No hay razón para cargar al usuario con un CAPTCHA o los navegadores de los usuarios con html-tricks. Este es un problema en la bandeja de entrada. – Tomas

+0

Pero si un sitio se está ejecutando bajo múltiples bots, existe la posibilidad de cerrar el sitio. Esa no es la solución para evitar el correo no deseado utilizando yahoo o gmail. Tienes que resolverlo desde el final de tu sitio web. –

6

La única forma (aparte del lado del cliente) que no sea una confirmación de usuario de tipo CAPTCHA sería escribir todo de forma dinámica. Muchos (pero no todos) robots probablemente ignorarían el contenido dinámico. Por ejemplo

document.write("<"+"form>" 
    +" NAME " 
    +" <"+"input type='text' name='name' /> " 
    +"EMAIL " 
    +"<"+"input type='text' name='email' /> " 
    +"MESSAGE " 
    +"<"+"textarea name='message' /> " 
    +"<"+"input type='submit' /> " 
+"<\/form> "); 
+0

¿Eso realmente funciona? Parece una manera muy simple – BillK

+0

Hago una cosa muy similar donde simplemente configuro la dirección de correo electrónico dinámicamente en la carga de la página. El correo electrónico no está en una sola cadena, es decir: '" mi "+" correo electrónico @ "+ dominio +".com "' –

+0

Todos los bots evitan esto. – Alysko

53

Un truco muy simple que he estado usando con una sorprendentemente buena tasa de éxito es la siguiente: Proporcionar un campo de texto que se oculta a los usuarios humanos con style="display: none", pero con un nombre atractivo como email. La mayoría de los bots completarán algo en este campo, pero los humanos no pueden verlo así que no lo harán. En el servidor, solo asegúrese de que el campo esté vacío; de lo contrario, trate el envío como correo no deseado.

+1

Una gran idea. Una combinación de tu idea y Graza podría ser simplemente eso. – BillK

+5

¡Esta es una gran idea! Alternativamente, si los bots son lo suficientemente inteligentes como para ignorar tales etiquetas, establezca 'display: none' dinámicamente en javascript, y agregue un comentario pidiéndole al usuario que NO complete el campo en caso de que el javascript falle. – Graza

+3

Me encanta esta idea. CAPTCHAs son un dolor en el cuello. La prevención de spam debe consistir en detectar bots, no en demostrar que el usuario es humano. –

-3

No necesitará reducir el correo no deseado porque los mensajes no se publican en el sitio web. Se publica una gran cantidad de spam en foros y blogs porque llegará a una gran audiencia de espectadores y robots.

Para un formulario de contacto privado, el correo no deseado es ineficaz, por lo que no tendrá que preocuparse por grandes cantidades. Los pocos mensajes de spam que recibirá se pueden filtrar de manera efectiva con un filtro de spam en su bandeja de entrada (por ejemplo, usando gmail o yahoo), especialmente porque los mensajes entrantes son texto sin imágenes.

+0

Desafortunadamente, esto no es verdad. La generación actual de bots de spam solo navega por la web y publica en * todos * los formularios que pueden encontrar. No saben, ni les importa, si su publicación realmente llega a una página web o no ... – Wim

+1

Recibo menos de 10 spams por día para un formulario de contacto privado en un sitio grande. Pero incluso si obtienes cientos, ¿qué importa? ¿No es eso para lo que tenemos filtros de spam? Una solución del lado de la entrada como un captcha u otras soluciones publicadas son una carga innecesaria para un formulario de contacto privado. – Tomas

+0

Los filtros de correo no deseado pueden ayudar en este caso, pero no siempre. Mi formulario web de Drupal incluye demasiados encabezados y pies de página que hacen que todo el correo electrónico se vea bien para el filtro, no se dispara en la cantidad relativamente pequeña de contenido de correo no deseado en el medio. – Wim

0

grep para métodos URI, caracteres urlencoded, o los dos caracteres de marcado HTML, parece funcionar.

0

Utilice la tecnología JS. Al igual que si un usuario entra en su página de contacto, javascript generará una cadena o algo similar que prefiera y colocará la información en un campo de texto oculto. Pero no es la solución real, el bot inteligente puede descifrarlo fácilmente.

Otra forma es, también puede utilizar la verificación de correo electrónico después del envío del formulario de contacto. Y almacene los datos en su base de datos. Si el cliente verifica la url a través del correo electrónico, la información de contacto se le enviará por correo desde la base de datos.

Y también use la demora para evitar el ataque continuo de un robot. Me gusta sleep() en código PHP. Esto agregará pocas demoras en su código. De esta forma, puedes reducir los ataques aleatorios, pero este no es el método de prevención.

4

Si desea hacer una solución de front-end completamente, he tenido éxito recientemente al dejar en blanco el atributo de acción de formulario y llenarlo mediante una función $ (document) .ready.La mayoría de los spambots usan un navegador que tiene javascript deshabilitado, o están buscando campos ocultos para evitar la detección.

Ejemplo:

su HTML sería:

<form method="POST" action="" id="contact-form"> 

y en cualquier lugar de la página que se puede usar esto para poblarlo.

<script> 
     $(document).ready(function(){ 
       $("#contact-form").attr("action", "/yourMailScript.cgi"); 
     }); 
</script> 

Un navegador bot sin javascript no recibirá una acción de formulario, y obtendrá un 404 al momento del envío. Cualquier persona con un navegador normal (a menos que tenga JS deshabilitado por razones paranoides) obtendrá el comportamiento normal.

0

me pareció una buena idea en esta página:

http://www.evengrounds.com/developers/alternatives-to-captcha

Usted puede hacer que su botón ENVIAR mostrar una página confirmación, en la que se le explica a usuario que tiene que golpear el botón CONFIRMAR para realmente enviar un mensaje. Los Spambots solo suelen enviar la primera forma y omiten el segundo paso.

0

Puede agregar una pregunta simple, cada persona seria que quiere contactarlo, puede contestar fácilmente. Por ejemplo, un campo donde debe ingresar la primera letra del dominio. La mayoría de los bots no entienden la pregunta y no ingresan nada o algo al azar.

También podría intentar hacer un seguimiento del tiempo durante el cual el usuario necesita ingresar datos. Si intenta enviar el formulario antes de los 5 segundos antes de escribir la primera palabra, no permita enviarlo. Por lo general, los bots solo analizan el sitio, completan todo y luego lo publican y van al siguiente sitio web.

0

Utilice una API antispam como Akismet o Cleantalk. Puede utilizar los controles tradicionales para obtener bots menos sofisticados antes de presionar la API. Una API antispam es la única forma de detectar spam enviado por un ser humano.

Cuestiones relacionadas