Prevenção contra fraude - como garantir que os votos sejam legítimos [fechados]

2

Um site no qual estou trabalhando inclui um concurso no qual os usuários podem votar em sua entrada favorita. O cliente quer alguma forma de prevenção de fraude de voto.

A idéia de gravar os endereços IP de todos os votos foi feita, mas não tenho certeza se é uma boa solução. Endereços IP internos são obviamente uma má ideia, mas e os endereços externos? O problema que vejo com isso é, por exemplo, que todo um laboratório de informática da faculdade pode estar rodando em um único endereço IP externo. - Talvez até o campus inteiro. Se apenas um número limitado de votos for permitido a partir de um endereço IP, esse limite poderá ser alcançado rapidamente por votos completamente legítimos.

Alguém sabe de uma maneira melhor de implementar isso? Certamente isso já foi feito antes.

Qualquer ajuda é apreciada. Agradecemos antecipadamente.

    
por ks78 08.07.2010 / 19:52

3 respostas

4

Tudo depende da quantidade que você quer impedir o usuário.

  • Você pode usar o captcha para inviabilizar o voto automatizado, mas não impede que um único ser humano dedicado tire proveito do voto.
  • Você pode exigir que os usuários sejam autenticados antes de votar.
  • Você pode exigir que o usuário forneça um endereço de e-mail e, em seguida, envie um link exclusivo para o envio da votação. Isso é semelhante a como você registraria um usuário apenas se ele tivesse um endereço de e-mail válido. A partir daqui, você pode negar vários votos para o mesmo endereço de e-mail.
  • Salve um cookie quando um usuário votar para indicar que o usuário já votou. Isso é fácil de contornar, mas pode impedir um usuário menos tecnicamente inclinado.
  • Use o openID, como o dotnetopenauth, para autenticar uma terceira parte, como o google ou o yahoo, para acessar a área de votação e, em seguida, registre o openID do usuário para solicitações futuras.
  • Registre as teclas digitadas pelo usuário (dinâmica do teclado), dados de contexto HTTP e tempo de conclusão de voto para analisar estatisticamente a possibilidade de repetição de eleitor com o uso de um algoritmo estatístico de agrupamento como k-means.
  • Só fica mais louco a partir de agora, então vou parar por aqui.
por 08.07.2010 / 20:17
5

O que você quer é abrir a votação apenas para usuários que foram registrados por pelo menos uma semana / mês / etc - mas isso provavelmente não irá ajudá-lo, porque se você está trazendo verificações de IP, soa como se você não estivesse autenticando seus usuários.

Se você estiver tentando eliminar a fraude e não estiver autenticando seus usuários, provavelmente terá que levantar as mãos e ir embora. Se você puder ficar satisfeito com uma redução mínima na fraude casual, há algumas coisas que você pode fazer.

As verificações de IP do eleitor são um mecanismo de custo relativamente baixo para tentar manter a votação múltipla baixa, se você não tiver mais nada a seguir, mas como você percebeu, pode invocar um custo em termos de usuários legítimos impedidos de votar, e não faz nada para impedir o empilhamento de votos pelo recrutamento de não usuários, cada um dos quais terá um endereço IP legitimamente diferente (por exemplo, "Hey Slashdot / Reddit / Pharyngula / IRC-Channel-X", todos votarão nessa opção nesta enquete ! "). O preenchimento de usuário único ainda pode ser feito com botnets ou grandes listas de proxy ou contas em várias máquinas (ou seja, qualquer laboratório da universidade que não esteja atrás de um NAT).

O que você está procurando é um pouco de informação que será exclusiva para um usuário. Se você não tem isso atualmente, pode criá-lo enviando tokens de uso único para os usuários, o que é basicamente um voto por convite. Isso ainda é problemático, é claro, se seus usuários ainda não tiverem lhe dado permissão para enviá-los por e-mail ou se você não souber quem são seus usuários.

Se você puder atrair seus usuários para se registrar no site, então você pode autenticar os votos dessa maneira, mas é perigoso começar ao mesmo tempo que votar, porque mais uma vez você enfrenta a possibilidade de um esforço de recrutamento. / p>

Você pode fazer perguntas junto com sua enquete de que qualquer usuário real deve ser capaz de responder facilmente, mas não usuários, e filtrar os resultados dessa maneira, mas você pode descobrir que seus usuários sabem menos do que pensa e nada impede que os eleitores falsos recebam uma folha de fraude contendo todas as respostas.

O que parece estar procurando é uma maneira de restringir a entrada apenas a um número desconhecido de pessoas completamente desconhecidas e impedir que elas forneçam informações mais de uma vez ou alterem sua identidade aparente. Isso não vai acontecer.

    
por 08.07.2010 / 20:19
1

Além de limitar o IP por IP, não há muito o que fazer se você realmente se importa com esses votos serem únicos. Você pode querer olhar para armazenar os IPs que votaram em um banco de dados não-relacional para aumentar a velocidade da consulta e diminuir o uso de recursos.

    
por 08.07.2010 / 20:03