Pergunta

Quais mecanismos você conhece que evitam que seu site seja abusado por spammers anônimos.

Por exemplo, digamos que eu tenha um site onde as pessoas possam votar em algo.Mas eu não quero que alguém envie spam até o topo.Então descobri (a) criar uma conta e só poder votar uma vez e (b) CAPTCHA para diminuir spam.Que outros métodos você conhece e quão bem eles funcionam?

Foi útil?

Solução

A grande coisa que notei é que, faça o que fizer, você deseja que seu sistema seja único.Você deseja que um invasor adapte seu programa de automação para seu site específico, em vez de apenas lançar nele um script pré-existente que funcionará em quase qualquer lugar.Nem precisa ser criptograficamente seguro;basta tornar seu site um pouco diferente do normal.

Isso não significa que você não pode ou não deve usar algo como um widget captcha pré-construído.Com certeza use um desses como ponto de partida!Significa apenas que você precisa personalizá-lo em algum lugar para que aconteça algo extra que esteja fora da norma e quebre qualquer script pré-existente que normalmente poderia derrotá-lo.

Se o seu site ficar grande o suficiente para que você tenha invasores visando-o especificamente, então sua pequena personalização provavelmente não será mais válida e você poderá fazer algo um pouco mais especial e pensar em criptografia real e tudo mais.Mas essa é uma daquelas coisas que é um problema “bom” de se ter.

Outras dicas

alt text

De xkcd

Para um sistema CAPTCHA, recomendo vivamente reCAPTCHA.

Os CAPTCHAs tradicionais gerados por computador eventualmente ser quebrado desenvolvendo um sistema suficientemente inteligente.Por exemplo, aqui está alguém que afirma quebrar o CAPTCHA do Google, antes considerado inquebrável, com taxa de acerto de 30%.O reCAPTCHA, por definição, mostra apenas imagens que não podem ser reconhecidas pelo reconhecimento óptico de caracteres.

E, ao mesmo tempo, o esforço dos seus usuários será direcionado para o bem comum - eles ajudam a digitalizar livros reconhecendo palavras que não podem ser reconhecidas automaticamente.

Ver aqui para obter mais explicações e experimentá-lo.

  • Limite o número de votos por endereço IP por vez
  • Bloqueie proxies anônimos.
  • Para votar:Que tal embaralhar o valor que deve ser retornado pelo formulário "por sessão".Uma vez que “1” significa o primeiro item, “2” significa o segundo.Então "77" significa o primeiro item, "812" significa o segundo, ...pode haver alguma matemática simples nos bastidores, mas evita que os usuários enviem a mesma consulta HTTP repetidamente.
  • O que funcionou muito bem para mim:Use formulários AJAX, não formulários HTTP simples.Tecnicamente não é muito mais complicado falsificar votos, mas eu escrevi um software de blog simples e seu único mecanismo de proteção contra SPAM é enviar comentários via AJAX - sem SPAM até agora.

Sou fã do CAPTCHA de "campo oculto".Não me lembro onde li sobre isso, mas a ideia é esta:

  • crie seu formulário normalmente
  • adicione um campo extra, mas oculte-o (ou seja, style="display:none" na div circundante ou na linha da tabela)
  • após o envio, se o campo estiver em branco, execute a ação adequada (ex. enviar um e-mail);se o campo foi preenchido, então é um remetente robô

O único caso em que isso falha é se o navegador do usuário não suporta CSS (ou ele está desligado), o que é muito raro.

Cobrar por votos, como fazem em alguns programas de “talentos” da televisão, e receber spam até o banco!

Sério, esse é um problema muito difícil e, algum dia (talvez em breve, se você ouvir Ray Kurzweil), os computadores farão testes para excluir humanos.As respostas que estou adicionando à lista têm desvantagens óbvias, mas apenas para fins de enumeração:moderação (peça humanos para fazer o teste) e rastreamento baseado em IP (limite o número de votos de um host).

stackoverflow possui alguns recursos que ajudam nisso;Acho que a etapa mais útil que você pode tomar é desativar a capacidade de voto de usuários anônimos e novas contas.Dessa forma, ninguém pode se inscrever em centenas de contas e usar seu voto para dominar outros usuários.Eu diria que exigir algumas postagens ou associação por um determinado período de tempo são opções decentes.

Alguns diriam que você poderia permitir um voto por endereço IP para ajudar a resolver isso, mas já joguei muitos jogos em que usuários mal-intencionados com um número quase infinito de proxies desafiavam a segurança baseada em endereços IP.É um impedimento, mas um usuário experiente irá contorná-lo facilmente.

Esta é a área de estudo do Computação Humana.

há um excelente vídeo de Luis von Ahn aqui:http://video.google.com/videoplay?docid=-8246463980976635143

Há algumas idéias nas respostas ao Melhor CAPTCHA sem imagem? pergunta se você ainda não viu.

Eu normalmente uso uma combinação dos dois:o usuário anônimo tem liberdade para navegar em tudo, mas se quiser votar tem que se cadastrar.

No processo de cadastro, dependendo da situação, utilizo um optin thru mail (para finalizar o cadastro e confirmar se pelo menos a caixa postal existe) e/ou um CAPTCHA.

A partir daí você pode decidir se o usuário pode votar mais de uma vez, ou qualquer outra regra.

A propósito, não sou fã das restrições baseadas em IP:há muitas situações em que a rede de grandes organizações usa poucos IP para todos os seus usuários, então o risco de bloquear usuários que poderiam votar é alto.

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