2011-04-25 9 views
6

Tengo un formulario de contacto que envía a mi correo electrónico y recientemente fui atacado por algún tipo de ataque de spam ... Recibí como 76k correos electrónicos durante la noche desde la misma dirección IP. Me hizo enojar mucho ¿Qué puedo hacer para arreglar esto? Sé que puedo implementar captcha pero no quiero eso. : \

¿Qué más puedo hacer para evitar el envío de formularios múltiples?

+0

Puede usar '$ _SESSION' para guardar la última vez que se envió un formulario de contacto y el número de presentaciones durante esta sesión. Cuando el recuento es superior a 3 y la última vez es inferior a 5 minutos, publique una advertencia y actualice la última vez para evitar los spams. – Khez

+1

@Khez que solo funciona si el cliente maneja cookies. De lo contrario, se creará una nueva sesión para cada solicitud. No creo que esto sea una prueba de correo no deseado. –

+0

@James cierto, es por eso que solo comento y no respondo. Solo estaba tratando de empujarlo en la dirección correcta. – Khez

Respuesta

10

Puede intentar detener esto en una número de maneras diferentes:

  • CAPTCHA (usted ya dijo que no le gustó pero yo t es posiblemente la solución más fácil)
  • Responder a algún tipo de pregunta que es fácil para una persona para responder, pero no un script
  • Asegurarse de que el usuario ha iniciado sesión antes de que puedan presentar (suponiendo que tienen que ser registrados)
  • Tasa de limitar el formulario para que cada dirección IP sólo puede presentar una vez cada periodo de tiempo N
+0

Prefiero una combinación de sesión y dirección IP. Pero +1 por ofrecer soluciones múltiples. – Khez

0

un código de imagen es una forma muy común de prevenir tales (y por una muy buena razón, usted debe pensar en ello)

si no se puede establecer una cookie y comprobar si su conjunto, si lo es, no permitir enviando el correo, o registrando la ip en un archivo o base de datos y verificando cuando la IP envió el correo por última vez, y si la diferencia es lo suficientemente pequeña, no permita que se envíe el correo

+0

-1 Acaba de decir que sabe que puede implementar captcha, pero no lo quiere. Esto fue más adecuado como un comentario. – Khez

1

para evitar código de imagen, puede filtrar IP, por ejemplo, permitir un máximo de 10 mensajes por día desde la misma IP.

Cada vez que alguien envía un mensaje, almacena la ip e incrementa un contador en una base de datos.

0

Lo más sencillo es hacer que la presentación del formulario (o representación) requiera la ejecución de javascript. Es un poco antisocial para cualquiera que tenga instalado NoScript, pero la mayoría de los scripts automatizados no podrán manejarlo.

+0

Tipo de respuesta falsa. Los scripts automatizados envían solicitudes POST directamente a la página. JS no hará nada para ayudar con su bombardeo. – Khez

+0

Si la única forma de obtener una URL POST válida es ejecutar algunos JS, entonces funciona. – regularfry

+0

Usted implica que la URL de la publicación cambia con cada actualización, eso es horriblemente feo. Usted agrega sobrecarga a una solución que sus usuarios legítimos podrían no ser capaces de usar. – Khez

4

Puede usar Akismet, que no utiliza validación.

+1

+1 akismet está hecho de amor puro –

+0

Muy buena solución a este problema. – daganh