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.