Existe uma maneira confiável de evitar trapaças em um concurso baseado na web onde usuários anônimos podem votar?

StackOverflow https://stackoverflow.com/questions/55835

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou trabalhando em um concurso baseado na web que deveria permitir que usuários anônimos votassem, mas queremos evitar que votem mais de uma vez.Os limites baseados em IP podem ser contornados com proxies anônimos, os usuários podem limpar cookies, etc.É possível usar um aplicativo Silverlight, que teria acesso ao armazenamento isolado, mas os usuários ainda podem limpar isso.

Não acho que seja possível fazer isso sem que algum curinga vote em um bot ou algo assim.Tive uma ideia?

Foi útil?

Solução

A resposta curta é:não.A resposta mais longa é:mas você pode tornar isso arbitrariamente difícil.O que eu faria:

  • A votação requer a resolução de um captcha (para evitar ao máximo a votação automatizada).Para ser ainda mais eficaz, eu recomendaria ter preparado vários tipos de captchas simples (como "escolha a foto com o gato", "o que é 2+2", "digite a palavra", etc) e gire ambos pelo hora do dia e por IP, o que deve tornar os sistemas automáticos ineficazes (ou seja, se alguém usando IP A criar um bot para resolver o captcha, este se tornará inútil no dia seguinte ou se ele/ela o distribuir para outros computadores/usar proxies)
  • Ao filtrar por IP, você deve ter cuidado ao considerar situações em que vários hosts estão atrás de um IP público (AFAIK AOL faz proxy de todos os seus clientes por meio de alguns IPs - portanto, tal limitação baniria efetivamente os usuários da AOL).Além disso, muitos proxies enviam cabeçalhos apontando para o IP original (como X-Forwarded-For), então você também pode dar uma olhada nisso.
  • Finalmente, usar algo como FSO (Flash Shared Objects - "Flash cookies") é obscuro o suficiente para que 99,99% das pessoas não saibam.Silverlight é ainda mais obscuro.Para ser ainda mais sorrateiro, você pode comprar outro domínio e definir o FSO desse domínio (assim, se o usuário estiver procurando por FSOs definidos pelo seu domínio, ele não verá nenhum)

Nenhum desses métodos é 100%, mas esperamos que combinados forneçam o nível de segurança que você precisa.Se você quiser levar isso um nível mais alto, você precisa adicionar algum tipo de registro de usuário (que pode ser tão simples como pedir um endereço de e-mail válido quando a votação ocorrer e enviar um link de confirmação para o endereço fornecido, sem contar o votos para os quais o link não foi clicado - portanto, não precisa ser um "crie uma conta completa com nome de usuário/senha/primeiro nome/sobrenome/etc").

Outras dicas

Não, você não pode, e basta apenas uma pessoa e um fórum disposto para alterar o resultado de uma votação online.

Você tem que perceber as falhas inerentes de uma votação online e, em vez de tentar contorná-las, tentar usá-las a seu favor.

-Adão

Você certamente pode tornar isso difícil.

Que tal construir um perfil de usuário com informações como endereço IP, agente de usuário do navegador, nome da máquina e qualquer outra informação que você possa obter.

Armazene o perfil de cada usuário e, se você receber um perfil semelhante o suficiente a um já existente no banco de dados (você terá que ajustá-lo), poderá descartar esse voto.

Imagino que você provavelmente possa criar um perfil melhor usando o Silverlight, embora não tenha certeza de quais informações isso lhe dá acesso.

As soluções do lado do cliente estão fora de questão pelos motivos listados - elas podem ser manipuladas pelo usuário.As soluções do lado do servidor - como você disse - podem ser enganadas e ignoradas.

Se você está disposto a aceitar o fato de que não pode ter 100% de certeza de que está recebendo exatamente um voto por pessoa, então existem algumas medidas que você pode tomar para reduzir o ruído.

  • Use um CAPTCHA em seu formulário de envio de voto para dificultar a votação de bots e scripts.
  • Limite o número de votos por endereço IP a um.
  • Considere exigir registro para votar.(Sei que isto anula parte da sua pergunta original, mas dá-lhe um maior grau de controlo sobre a votação.)

Esse é um bom começo.

minha experiência pessoal no desenvolvimento e monitoramento de concursos me diz que não, não existe uma maneira confiável de evitar trapaças se você permitir que usuários anônimos votem (ou façam qualquer coisa que os permita participar do concurso).

você poderia brincar com IP, introduzir atrasos entre uma ação e outra, mas é realmente difícil:a melhor maneira é introduzir um captcha ou algo semelhante, se aplicável à sua situação específica.

o melhor de tudo é que não permita a participação de usuários anônimos:deixe-os “brincar” e ter acesso a uma simulação, mas o concurso precisa de login.

Não, é o computador do usuário e ele está no controle.Infelizmente, a única solução é trazê-lo de volta ao seu tribunal, por assim dizer, e exigir autenticação.

No entanto, um CAPTCHA ajuda a limitar os votos, pelo menos, a usuários humanos.

É claro que mesmo com autenticação você não pode impor votação única porque eles ensinam os bots a se registrarem...

Tenho que concordar que a resposta curta é não... mas se você olhar minha resposta recente aqui: Como identificar anonimamente um usuário e armazenar essas informações você certamente pode obtê-lo com uma margem de erro de 6%.

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