Pregunta

Tengo un formulario web que los usuarios rellenan y la información envían al servidor y se almacenan en una base de datos. Me preocupa que los robots sólo podría rellenar el formulario y voy a terminar con una base de datos completa de los documentos inútiles. ¿Cómo puedo evitar que los robots llenar mis formularios? Estoy pensando que tal vez algo así como la detección de robot Stackoverflow, donde si piensa que eres un robot, se le pide que verifique que no eres. ¿Existe una API del servidor en Perl, Java o PHP?

¿Fue útil?

Solución

Hay varias soluciones.

  1. Utilice una de CAPTCHA. SO utiliza reCAPTCHA por lo que yo sé.

  2. Agregar un campo adicional a su forma y ocultarlo con CSS (display: none). Un usuario normal no vería este campo y por lo tanto no va a llenarlo. Se comprueba en la presentación si este campo está vacío. Si no es así, se trata de un robot que ha llenado cuidadosamente todos los campos del formulario. Esta técnica se denomina usualmente como un "honeypot".

  3. Añadir una función de temporizador JavaScript. En la carga de la página se inicia un valor en cero y luego la aumenta a medida que pasa el tiempo. Un usuario normal sería leer y rellenar el formulario desde hace algún tiempo y sólo entonces enviarlo. Un robot sólo tiene que rellenar y enviar el formulario inmediatamente después de su recepción. Se comprueba si el valor ha ido mucho desde cero en la presentación. Si es así, entonces es probable que un usuario real. Si ve sólo un par de segundos (o incluso ningún valor debido a los robots no ejecución de JavaScript), entonces es probable que un robot. Esto sin embargo, sólo funciona si usted decide que va a exigir a sus usuarios tener JavaScript en el fin de realizar "escribir" las operaciones.

Existen otras técnicas para asegurarse. Pero estos son bastante simples y eficaces.

Otros consejos

Puede utilizar reCAPTCHA (igual que stackoverflow) - tienen bibliotecas para un número de lenguajes de programación.

Siempre he preferido código de imagen Honeypot ( artículo de Phil Haack ), como su menos invasivo para el usuario.

captchas traer problemas de accesibilidad, y estará finalmente derrotado por el reconocimiento de software.

Yo recomiendo la lectura de este breve artículo sobre trampas bot, que incluyen campos ocultos, como Mateo y vides Nuevo en la ciudad ya se ha sugerido.

De todos modos, sigue siendo libre de utilizar ambas trampas de captcha y bot.

CAPTCHA es grande. La otra cosa que puede hacer que evitará que el 99% de su tráfico robot aún no molestar a sus usuarios es la validación de campos.

Mi sitio, puedo comprobar si hay texto en campos como el código postal y número de teléfono. Eso ha eliminado toda la información errónea que no son objetivo del robot.

Se puede crear un sistema de dos etapas en el que un usuario rellena el formulario, pero entonces debe responder a un mensaje de correo electrónico a "activar" el registro en un plazo de tiempo determinado - por ejemplo 24 horas.

En la parte final, en lugar de llenar su tabla actual con todos los envíos de formularios, se puede poner en una tabla temporal que elimina automáticamente cualquier fila que es más viejo que su asignación de tiempo. A menos que tenga un problema grave bot, entonces yo creo que la tabla no llegaría tan grande, sobre todo si la primera forma se encuentra a pocos campos.

A se beneficiarían de este enfoque es que usted no tiene que utilizar código de imagen o alguna otra tecnología como la que podría crear algunos problemas de accesibilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top