Pergunta

Eu tenho um formulário da Web que os usuários preenchem e as informações enviam ao servidor e armazenadas em um banco de dados. Estou preocupado que os robôs possam apenas preencher o formulário e acabarei com um banco de dados cheio de registros inúteis. Como posso impedir que os robôs preencham meus formulários? Estou pensando que talvez algo como a detecção de robôs do Stackoverflow, onde se ele acha que você é um robô, pede que você verifique se não é. Existe uma API do lado do servidor em Perl, Java ou PHP?

Foi útil?

Solução

Existem várias soluções.

  1. Use um captcha. Então usa Recaptcha até onde sei.

  2. Adicione um campo extra ao seu formulário e oculte -o com CSS (Display: Nenhum). Um usuário normal não veria esse campo e, portanto, não o preencheria. Você verifica no envio se este campo estiver vazio. Caso contrário, você está lidando com um robô que preencheu cuidadosamente todos os campos de formulário. Essa técnica é geralmente chamada de "honeypot".

  3. Adicione uma função de timer JavaScript. Na carga da página, ele inicia um valor em zero e o aumenta com o passar do tempo. Um usuário normal lia e preencheria seu formulário por algum tempo e só então o envia. Um robô apenas preencheu e enviava o formulário imediatamente ao recebê -lo. Você verifica se o valor passou muito de zero no envio. Se houver, é provável que seja um usuário real. Se você vir apenas alguns segundos (ou mesmo nenhum valor devido aos robôs que não executam o JavaScript), é provável que seja um robô. No entanto, isso funcionará apenas se você decidir que você exigirá que seus usuários tenham JavaScript para executar operações "gravar".

Existem outras técnicas com certeza. Mas estes são bastante simples e eficazes.

Outras dicas

Você pode usar Recaptcha (o mesmo que StackOverflow) - eles têm Bibliotecas Para várias linguagens de programação.

Eu sempre preferi o honeypot captcha (Artigo de Phil Haack), como é menos invasivo para o usuário.

Os captchas trazem problemas de acessibilidade e serão derrotados pelo reconhecimento de software.

Eu recomendo a leitura disso Artigo curto Sobre as armadilhas de bot, que incluem campos escondidos, como Matthew Vines e New in Town já sugeriram.

De qualquer forma, você ainda está livre para usar as armadilhas Captcha e Bot.

Captcha é ótimo. A outra coisa que você pode fazer que impedirá 99% do tráfego do seu robô, mas não incomodar seus usuários, é validar campos.

Meu site, eu verifico o texto em campos como código postal e número de telefone. Isso removeu todas as informações erradas do robô não direcionado.

Você pode criar um sistema em duas etapas no qual um usuário preenche o formulário, mas deve responder a um e-mail para "ativar" o registro dentro de um período de tempo definido-digamos 24 horas.

No back -end, em vez de preencher sua tabela atual com todos os envios de formulário, você pode colocá -los em uma tabela temporária que exclua automaticamente qualquer linha que seja mais antiga que sua lista de tempo. A menos que você tenha um problema sério de bot, eu pensaria que a tabela não ficaria tão grande, especialmente se o primeiro formulário for apenas alguns campos.

Um benefício dessa abordagem é que você não precisa usar o Captcha ou alguma outra tecnologia como essa que possa criar alguns problemas de acessibilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top