2010-10-19 22 views
13

Estoy a punto de escribir un método de votación para mi sitio. Quiero un método para evitar que las personas voten por lo mismo dos veces. Hasta el momento mis pensamientos han sido:El mejor método para evitar el juego con votación anónima

  • caer una cookie de una vez que el voto es completa (susceptible a múltiples juegos de navegador)
  • Acceder Dirección IP por voto (esto va a fallar en Proxy/entornos corporativos)
  • Fuerza inicios de sesión

Mi sitio no se cuenta basada como tal, a pesar de que los agregados de datos de Twitter, por lo que existe la posibilidad de uso de Twitter OAuth como medio de identificación.

¿Qué sistemas existen y cómo lo hacen?

+0

posible duplicado de [¿Limitar 1 voto por dirección IP?] (Http://stackoverflow.com/questions/1246705/limit-1-vote-per-ip-address) – bzlm

Respuesta

11

Lo mejor sería no permitir la votación anónima. Si el usuario se ve obligado a iniciar sesión, puede guardar el ID de usuario con cada voto y asegurarse de que solo vota una vez.

El enfoque de las cookies es muy frágil ya que las cookies se pueden eliminar fácilmente. El enfoque de la dirección IP tiene el inconveniente que usted mismo describe.

+0

¿Sería posible para mí usar su ¿Iniciar sesión en Twitter como inicio de sesión en mi sitio? ¿De modo que mientras estuvieran conectados a Twitter podrían acceder a mi sitio? – Chris

+0

@Chris, sí. La forma más fácil sería usar un proveedor de SSO de terceros como http://www.janrain.com/ –

+0

¡Gracias, creo que esto funcionará bastante bien! – Chris

3

Un paso hacia un sistema de autenticación de usuario, pero no todas las complicaciones:

conseguir que el usuario introduzca su dirección de correo electrónico y confirmar su voto, no sería erradicar el juego, pero que le hará más difícil para los jugadores para registrar otra dirección de correo electrónico y luego votar, etc.

Puede valer la pena el paso adicional.

Háganos saber a lo que termina yendo.

+0

Esto no funcionaría tan bien. Tengo mi propio dominio Puedo tener cualquier correo electrónico que quiera dentro de él. Otro ejemplo: si su correo electrónico es [email protected], podría usar "[email protected]" [email protected], etc. (el texto después de que se ignore + se envía a su cuenta). También puede incluir puntos en su nombre de usuario. (¡Esto solo funciona en las direcciones de Gmail!) –

1

enfoque diferente, sólo para proporcionar una alternativa:

Suponiendo que la mayoría de la gente sabe cómo comportarse o simplemente no puede ser molestado a portarse mal, simplemente limpiar con carácter retroactivo los votos. Esto también mantendría la votación discreta para los votantes.

lo tanto, establecer las cookies, registrar todos los votos y después (o en un intervalo de tiempo?) Ir a través de los resultados y eliminar duplicados en base a los valores de cookie, combinaciones IP/userAgent etc.

Me asumir que no bloquear activamente múltiples votos de la misma persona mantiene el uso de métodos de elusión altamente técnicos a un mínimo y los resultados son fáciles de limpiar.

Como desventaja, probablemente no puedas mostrar los conteos de votos reales en vivo en la interfaz de usuario, o se levantarán las cejas cuando falten muchos votos.

3

Si desea ir con las cookies después de todo, utilice un evercookie.

evercookie es una API de JavaScript disponible que produce galletas extremadamente persistentes en un navegador. Su objetivo es identificar a un cliente incluso después de haber eliminado las cookies estándar , las cookies Flash (Objetos locales compartidos o LSO) y otras.

evercookie logra esto almacenando los datos de cookie en varios tipos de mecanismos de almacenamiento que están disponibles en el navegador local. Además, si evercookie ha encontrado que el usuario ha eliminado cualquiera de los tipos de cookies en cuestión, los recrea usando cada mecanismo disponible.

Hacer trampa en múltiples navegadores no se verá afectado, por supuesto.

+1

Tenga cuidado: si visita el sitio de evercookie, intentará (intentará) poner una evercookie en su navegador. Los Comentarios sobre una publicación reciente de Bruce Schneier contienen una interesante discusión del sitio: http://www.schneier.com/blog/archives/2010/09/evercookies.html – APC

+0

@APC ¿Por qué eso justifica una advertencia? Creo que la mayoría de los sitios, cuando los visitas, intentan poner una cookie en mi navegador. :) – bzlm

+0

El punto acerca de evercookies es que el software intentará ponerle una de sus super-cookies, incluso si ha configurado su navegador para que no acepte cookies de terceros. Por supuesto, a la gente realmente no le importa. Pero algunas personas se entusiasman bastante con el tema. – APC

1

A pesar de que probablemente no volvería a hacerlo yo mismo, pero mira estas cookies, que son bastante difícil deshacerse de:

http://samy.pl/evercookie/

Una forma diferente que tenía que abordar este problema y lucha fraude electoral, era requerir una dirección de correo electrónico, luego una persona aún podía votar, pero los votos no contarían hasta que hicieran clic en un enlace en el correo electrónico. Esto fue más fácil que completo en el registro, pero aún así fue muy efectivo para eliminar la mayoría de los votos fraudulentos.

+0

Vaya, vi que alguien ya sugirió evercookie – Andre

+0

Alguien sugirió también lo del correo electrónico. :) http://stackoverflow.com/questions/3968328/best-method-to-prevent-gaming-with-anonymous-voting/3968430#3968430 – bzlm

1

Si no desea obligar a los usuarios a iniciar sesión, tenga en cuenta esta evercookie, pero fuerce la secuencia de comandos java para habilitar el registro.

Esta evercookie es trivial de bloquear porque está basada en un script java. El atacante probablemente no usaría el navegador, con rizos que podría generar para usar las solicitudes. Hovewer tales herramientas generalmente tienen poca compatibilidad con JavaScript.

El correo es aún más fácil de hacer trampa. Cuando ejecuta su propio servidor, puede aceptar todas las direcciones de correo electrónico, por lo que tendrá un grupo de direcciones prácticamente ilimitado para usar.

3

¿De qué tipo de juego te quieres proteger? ¿Alguien crea un par de robots y te bombardea con miles (millones) de solicitudes? ¿O alguien sin mejores cosas que hacer e intentar hacer 10-20 votos?

Sí, lo sé: ambos, pero ¿cuál es su principal preocupación aquí?

El uso de CAPTCHA junto con la votación por correo electrónico (envíe un enlace al correo electrónico para validar la votación) podría funcionar bien contra los bots. Pero un ser humano puede explotar más o menos fácilmente el sistema de correo electrónico (como lo comento en una respuesta y lo vuelvo a publicar aquí)

Tengo un dominio personalizado y puedo recibir cualquier correo electrónico que desee.

Otro ejemplo: si su correo electrónico es miUsuario * @ gmail.com *, podría utilizar "[email protected]" [email protected], etc (el signo más y el texto después de se ignora y se entrega en su cuenta). También puede incluir puntos en su nombre de usuario ([email protected]). (Esto sólo obras de direcciones de Gmail!)

para proteger contra los seres humanos, que no saben siempre de galletas pero podría ser una buena opción. El uso de OAuth integrado con Twitter, FB y otras redes también podría funcionar bien.

Además, recuerde: requerir correos electrónicos para que alguien vote ¡asustará a muchas personas! ¡Obtendrá muchos menos votos!

Otra opción es limitar el número de votos que su sistema acepta desde cada ip por minuto (o hora o cualquier otra cosa). Para protegerse contra ataques distribuidos, limite el número total de votos que su sistema acepta dentro de un marco de tiempo.

+0

¡Uy, acabo de notar que esta es una publicación anterior! –

Cuestiones relacionadas