Impedir que bots maliciosos publiquem spam

15

Lembro-me de um site fechado por uso indevido e me pergunto se os bots fazem parte dele. Se o bot está postando algo no meu site, como posso combatê-lo? Eu estava pensando em definir alguns cookies e alterá-los via JavaScript + timestamp e assinar (para que os cookies de ontem não possam ser usados ​​hoje e na próxima semana).

Tenho certeza que a maioria das pessoas / bots usaria outro site em vez de ativar o JavaScript no bot.

O que mais eu posso fazer? Estou pensando no limite diário de POST e um honeypot para bots genéricos que apenas postam spam aleatoriamente.

John Conde
fonte

Respostas:

13

Você pode fazer várias coisas, incluindo:

  1. Colocando um campo falso que apenas os bots verão. Se esse campo for enviado com o restante do formulário, você poderá ignorá-lo (e bani-lo, se desejar). Você também pode interceptar bots ruins que seguem um link oculto .

  2. Use um CAPTCHA como reCAPTCHA

  3. Use um campo que exija que o usuário responda a uma pergunta como o que é 5 + 3. Qualquer humano pode responder, mas um bot não saberá o que fazer, pois está preenchendo automaticamente os campos com base nos nomes dos campos. Portanto, esse campo estará incorreto ou ausente. Nesse caso, o envio será rejeitado.

  4. Use um token e coloque-o em uma sessão e também adicione-o ao formulário. Se o token não for enviado com o formulário ou não corresponder, será automatizado e poderá ser ignorado.

  5. Procure envios repetidos do mesmo endereço IP. Se o seu formulário não receber muitas solicitações, mas de repente ele provavelmente está sendo atingido por um bot, considere bloquear temporariamente o endereço IP.

  6. Use Askimet . É ótimo para identificar spam.

John Conde
fonte
5
+1 - E, idealmente, você implementará uma combinação das sugestões listadas acima de uma maneira amigável (por exemplo, se um usuário tiver o Javascript desativado e, portanto, falhar na autenticação baseada em Javascript, apresente um CAPTCHA ao usuário)
Danlefree 5/10/10
6

John Conde descreve muitas coisas boas abordadas. O problema com a escolha de uma técnica anti-bot / anti-spam é equilibrar eficácia e conveniência. Seria realmente inconveniente ter que preencher um CAPTCHA toda vez que você quiser postar um comentário ou mensagem, mas se você precisar apenas de um CAPTCHA na inscrição, às vezes isso não impede os spammers.

Algumas das técnicas passivas são uma boa alternativa, pois não requerem ação humana. O problema é que os bots estão ficando cada vez mais sofisticados e, se os bots puderem resolver os CAPTCHAs, certamente poderão processar JS e CSS. Portanto, você precisará exercitar um pouco de criatividade, como usar CSS menos óbvio para ocultar seus campos de interceptação de bot.

Mas com base na sua pergunta, acho que você provavelmente percebe que o objetivo não é criar um site à prova de bot, mas apenas criar um impedimento suficiente para que os usuários do bot simplesmente escolham outros alvos mais fáceis. Portanto, o que é necessário aqui varia de site para site e provavelmente exigirá alguns testes de tentativa e erro. Eu tentaria primeiro as técnicas menos invasivas.

Por fim, outra maneira de remover o spam de seu site é usar a moderação de colegas para remover qualquer comentário enviado por bot ou spam enviado manualmente que passa rapidamente.

Lèse majesté
fonte
você pode explicar a idéia de moderação de colegas? Isso envolve usuários normais obtendo direitos de moderador ou como devo imaginá-lo?
0xC0000022L
@STATUS_ACCESS_DENIED: desculpe pela resposta tardia, mas a moderação de colegas é basicamente algo como digg, slashdot, stackexchange etc. onde os usuários podem moderar o conteúdo do site, dando algum feedback positivo ou negativo. Assim, você pode automatizar o sistema de modo que, quando usuários suficientes fornecerem um feedback negativo sobre um conteúdo, ele seja automaticamente oculto ou sinalizado para revisão. Em sites como o StackExchange, os usuários também podem sinalizar comentários / respostas como spam, chamando a atenção dos administradores. Isso reduz o trabalho que os administradores pagos precisam fazer.
Lèse majesté 23/09/11
obrigado. Isto, naturalmente, seria apenas o trabalho em sites de alto tráfego, onde os usuários suficientes pode ser incomodado para dar feedback;)
0xC0000022L
1

Como John Conde mencionou em seu número 1) e você mencionou, o honeypot pode funcionar muito bem na maioria dos casos e na maioria dos sites. Se alguma vez for realizado por um bot, você também pode executar um dos outros métodos mencionados por John. Mas, honestamente, se seu site tiver tráfego baixo ou médio, isso deve ser suficiente.

Exemplo, um dos meus favoritos:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Agora, quando o formulário é enviado, uma porcentagem extremamente alta de bots preencherá "email" e "email_address", mas os humanos preencherão apenas o que visualizarem, "email" e não "email_address". Portanto, no seu código `/ process-form ', basta verificar se o endereço de email não está vazio para verificação.

Simples e eficaz.

Anthony Hatzopoulos
fonte