2008-09-11 6 views
12

Estoy trabajando en un concurso basado en la web que se supone permite a los usuarios anónimos votar, pero queremos evitar que voten más de una vez. Los límites basados ​​en IP pueden pasarse por alto con proxies anónimos, los usuarios pueden borrar las cookies, etc. Es posible utilizar una aplicación de Silverlight, que tendría acceso a un almacenamiento aislado, pero los usuarios aún pueden borrar eso.¿Existe alguna manera confiable de evitar las trampas en un concurso web donde los usuarios anónimos pueden votar?

No creo que sea posible hacer esto sin algún bromista votando él mismo con un bot o algo así. ¿Tengo una idea?

Respuesta

19

La respuesta corta es: no.La respuesta más larga es: pero puedes hacerlo arbitrariamente difícil. Lo que haría:

  • La votación requiere resolver un captcha (para evitar la mayor cantidad posible de votos automatizados). Para ser aún más efectivo, recomendaría haber preparado múltiples tipos de captchas simples (como "elegir la foto con el gato", "qué es 2 + 2", "escribir la palabra", etc.) y rotarlas tanto por el hora del día y por IP, lo que debería hacer que los sistemas automáticos sean ineficaces (es decir, si alguien que usa IP A crea un bot para resolver el captcha, esto será inútil al día siguiente o si lo distribuye en otras computadoras/usa proxies)
  • Al filtrar por IP, debe tener cuidado al considerar situaciones en las que hay varios hosts detrás de una IP pública (AFAIK AOL envía un mensaje a todos sus clientes a través de unas pocas IP, por lo que dicha limitación prohibiría efectivamente a los usuarios de AOL). Además, muchos proxies envían encabezados que apuntan a la IP original (como X-Forwarded-For), por lo que también puedes echarle un vistazo.
  • Finalmente, usar algo como FSO (objetos compartidos Flash - "cookies Flash") es lo suficientemente oscuro como para que el 99.99% de la gente no lo sepa. Silverlight es aún más oscuro. Para ser aún más disimulados, usted podría comprar otro dominio y configurar el FOE de ese dominio (por lo que, si el usuario está buscando conjunto de FSO por su dominio, no van a ver ninguna)

Ninguno de estos métodos es 100%, pero afortunadamente combinados te brindan el nivel de seguridad que necesitas. Si desea subir este nivel, debe agregar algún tipo de registro de usuario (que puede ser tan simple como pedir una dirección de correo electrónico válida cuando se produce la votación y enviar un enlace de confirmación a la dirección dada sin contar el votos para los cuales no se hizo clic en el enlace, por lo que no es necesario que sea completo "crear una cuenta con nombre de usuario/contraseña/primer nombre/apellido/etc.").

0

No, es la computadora del usuario y tienen el control. Lamentablemente, la única solución es traerlo de vuelta a su pista por así decirlo y requerir autenticación.

Sin embargo, un CAPTCHA ayuda a limitar los votos al menos a los usuarios humanos.

Por supuesto, incluso con la autenticación no se puede cumplir solo voto, porque entonces ellos enseñan a los robots para registrar ...

0

Por supuesto que puede hacer que sea difícil.

¿Qué hay de construir un perfil de usuario con cosas como dirección IP, navegador useragent, nombre de la máquina y cualquier otra información que pueda obtener.

Almacene el perfil para cada usuario, luego, si recibe un perfil que es similar a uno que ya está en la base de datos (tendrá que ajustarlo) puede descartar ese voto.

Imagino que probablemente pueda construir un perfil mejor con Silverlight, aunque no estoy seguro de a qué información le da acceso.

0

Las soluciones del lado del cliente se eliminan por las razones que usted indicó: pueden ser manipuladas por el usuario. Las soluciones del lado del servidor, como usted dijo, pueden engañarse y pasar por alto.

Si está dispuesto a aceptar el hecho de que no puede estar 100% seguro de obtener exactamente un voto por persona, existen algunas medidas que puede tomar para reducir el ruido.

  • Use un CAPTCHA en su formulario de votación para dificultar que los bots y scripts voten.
  • Limite el número de votos por dirección IP a uno.
  • Considere la posibilidad de solicitar el registro para poder votar. (Sé que esto derrota parte de su pregunta original, pero le da un mayor grado de control sobre la votación.)

Eso es un buen comienzo.

0

mi experiencia personal en el desarrollo y monitoreo de concursos me dice que no, no hay una manera confiable de evitar hacer trampas si permites que los usuarios anónimos voten (o hagan cualquier cosa que les permita participar en el concurso).

puede jugar con IP, introducir demoras entre una acción y la siguiente, pero es realmente difícil: la mejor manera es introducir un captcha o algo similar, si corresponde en su situación particular.

lo mejor de todo, no dejes que los usuarios anónimos participen: déjalos "jugar" y acceder a una simulación, pero el concurso necesita un inicio de sesión.

1

No, no se puede, y solo se necesita una persona y un foro dispuesto a change the outcome of an online vote.

Tiene que darse cuenta de los defectos inherentes de una votación en línea y en lugar de tratar de evitarlos intente utilizarlos en su beneficio.

-Adam

Cuestiones relacionadas