security voting

security - Detener a los usuarios que votan varias veces en un sitio web



voting (15)

Como se ha dicho, no hay una solución "perfecta".

Como un intento de una solución imperfecta, ¿qué hay de almacenar un hash de la dirección IP y el agente de usuario.

Esto significaría que diferentes usuarios de una IP dada, que tienen diferentes agentes de usuario de navegador, aún pueden votar.

Estoy planeando agregar algunos botones de voto arriba / voto abajo a un sitio web que ejecuto. Esto parece bastante fácil, pero quiero evitar que la gente vote en múltiples ocasiones. Una solución sería hacer que se registren antes de permitirles votar, pero preferiría no tener que obligarlos a registrarse.

¿Hay alguna manera razonable de hacerlo? Comprobar la dirección IP no parece una buena solución, ya que es posible que varios usuarios provengan de la misma dirección IP.

Las cookies pueden ser la respuesta, pero un usuario inteligente podría eliminar la cookie. Alguna mejor idea?


Creo que debes registrar al usuario antes de subir / bajar el voto. Puede obtener una pequeña información del usuario para registrarse, para que no se aburra o rompa su registro. Luego puede actualizar su cuenta si lo desea. En mi humilde opinión, esta es la mejor solución.


Creo que realmente se trata de la naturaleza de su sitio web y de la precisión de sus resultados.

Usar una cookie parece ser la mejor opción, pero depende de la audiencia objetivo de su sitio web. ¿Serían lo suficientemente expertos en tecnología para tratar de vencer al sistema y permitirles votar muchas veces? De lo contrario, el riesgo debería ser bastante bajo y este sería el mejor enfoque.

Verificar con una dirección IP, como dijiste, puede ser demasiado restrictivo. Pero si es fundamental que todos los votos provengan de individuos únicos, este podría ser el mejor enfoque, incluso si eso significa que algunos votantes legítimos no podrán votar.

Pensé en otra opción, pero no estoy seguro de si es posible o factible. Si pudiera combinar el enfoque de la dirección IP con una verificación basada en hardware (por ejemplo, la dirección MAC de la NIC), esto eliminaría el enfoque de la dirección IP que es demasiado restrictivo debido a la NAT dentro de una LAN. Pero no ayudaría en la situación en la que tiene una computadora en un cibercafé que usan diferentes personas.

También debe usar captcha (para cuentas no registradas) para reducir la probabilidad de votar bots. Si alguien quiere emitir varios votos maliciosamente, dificultando la automatización del proceso de votación a través de bots ayudará a reducir la ocurrencia de tal comportamiento.


Es cuestión de cuántas identidades puede controlar una sola persona. Cuanto más difícil sea para una sola persona controlar múltiples identidades, más segura será su encuesta.

Para encuestas de grado de entretenimiento donde los resultados no importan, el enfoque de cookie única es suficiente. Muy fácil de evitar si el usuario abre icognito windows.

Se puede obtener una mejor protección si se pone una barrera de registro, puede usar los inicios de sesión basados ​​en OAuth para una autenticación sin interrupciones, sería necesario un esfuerzo para cambiar las cuentas para obtener más votos. Pero esto no detiene a los desesperados a votar muchas veces.

Aún mejor si envía un código de confirmación en SMS. Aunque las personas pueden poseer varios números de teléfono, no es común tener una cantidad considerable de números de teléfono para ejecutar un fraude. Pero este enfoque cuesta dinero para usted y puede ser abusado haciendo DoSing al servidor para agotar todos los SMS.

Si quieres encuestas de grado gubernamental, donde los votos pueden decidir una elección. Luego, debe hacer que los votantes se presenten en la oficina de registro para solicitar la encuesta y les permita elegir uno de los sobres PIN preparados, que contienen un hash largo al que pueden ingresar al emitir el voto. Entonces, a menos que los organizadores cometan un fraude, los votantes no pueden. Esto también asegura el anonimato.


Lo siento, no tengo una respuesta útil, solo quiero compartir mi experiencia.

Hace aproximadamente 8 años trabajé para un sitio que publicaba encuestas en línea. Una vez fuimos botados por algunos bots votando en algunas de nuestras preguntas varios cientos de votos por minuto.

Tuve que implementar algunos controles de emergencia: dirección IP, cookies, y realmente no recuerdo qué más.

Al final del día, decidimos retirar las encuestas. Esos malditos robots simplemente no les importaba. Las direcciones IP fueron falsificadas, las cookies fueron eliminadas, etc.

Si realmente necesitas que las encuestas sean desalojables, no veo otra manera de exigir el registro y el uso de captchas para evitar que bots se registren para nuevas cuentas.

Y lo triste es que esto fue solo un sitio de entretenimiento con encuestas sobre cuál es tu color favorito y cosas por el estilo.

Lo único que no probamos fue usar captchas porque no existían en ese momento. Eso podría haber reducido mucho el engaño no humano.

No tome esto como ningún tipo de consejo experto sobre el tema, porque esa fue la única vez que tuve algo que ver con las encuestas en línea, pero recordé mi historia y quise compartirla.


Me pregunto si podría convertirlo en un proceso de varios pasos, para hacerlo más difícil para los BOT.

El registro, o alguna tarea similar, le proporciona Cookie-A, y luego cuando vota obtiene Cookie-B, pero si tiene Cookie-B y no tiene una Cookie-A que coincida, su voto no cuenta. Si intenta volver a registrarse en la misma máquina que puede detectar si ya tiene Cookie-A. Pasar por los pasos demasiado rápido se trata como un BOT.

Tuvimos una prueba psicométrica, con muchas preguntas, y los usuarios tuvieron que hacer respuestas reflexivas. Una respuesta en sub-N segundos fue que alguien simplemente presionó los botones para pasar. Nunca les dijimos que su respuesta fue demasiado rápida, simplemente marcamos los datos como "sospechosos".

Entonces, cualquiera que intente ir directamente al Botón de Voto no funcionará. Tendrían que hacer el Paso-A, luego el Paso-b y luego el Paso-C en orden.

Para volver a votar tendré que borrar las cookies, volver a registrarme, leer la página publicitaria (lo que sea) y finalmente volver a votar, todo en el orden correcto y no demasiado rápido.

Requerir que JavaScript esté habilitado puede ser útil, al igual que un sistema Captcha. Captcha podría tener algún tipo de retraso: "Mire como aparecen las dos palabras", de modo que hay dos palabras, que se muestran una tras otra, pero "palabras reales" para que puedan ser fácilmente memorizadas y luego ingresadas. Cualquier respuesta que es "demasiado rápido" no es válido.

En algún momento, la gente se molestará y no se molestará.


No hay una forma precisa de evitar los votos múltiples del mismo usuario, incluso si no eliminan las cookies, pueden usar otro navegador u otra computadora.


Nunca he usado un sistema como este, pero trato de identificar a un usuario por la huella digital de su navegador. Este plugin jQuery combina el tamaño de la pantalla, la profundidad de color, la zona horaria del usuario y los complementos instalados para crear una ID única de un usuario. Definitivamente no es infalible, pero es un enfoque diferente.


Obviamente necesitas identificar al usuario para que solo pueda votar una vez. Pero identificar al usuario no significa que deba abrir una pantalla de inicio de sesión. Como se dijo anteriormente, puede solicitar la dirección de correo electrónico y utilizarla como identificador.

Nadie menciona la forma en que funciona, si el usuario tiene algo que ganar (aquí reptuting) cuando se convierte en un usuario de registro y si el proceso de inicio de sesión es tan simple como dar una dirección de correo electrónico, es una situación en la que el usuario Feliz de iniciar sesión y votar, y está feliz de tenerlo registrado y votando (y solo una vez por pregunta).

Jeff Atwood escribió un artículo sobre la "barrera de inicio de sesión" , que puede darte pistas.


Por lo tanto, desea que cada persona única tenga un solo voto en cada elemento. Cuando una persona intenta votar que ya ha votado anteriormente, quiere detectar esto. Esto significa que debes identificar a la persona. No hay trucos para evitar eso.

Ahora, dado que las personas pueden iniciar sesión desde cualquier computadora, identificar la computadora no ayuda. Esto excluye las verificaciones y cookies de IP, así como cualquier otra cosa basada en el hardware del usuario.

¿Cómo identificar a una persona? No puedes. Solo puede obligarlos a identificarse, proporcionando credenciales únicas, como un número de seguro social (creo que esto se usa a menudo en Corea), un número de pasaporte o similar. Esto, por supuesto, no ayuda si no lo revisas, ya que cualquiera puede inventar un número de 10 dígitos con pocas posibilidades de colisión.

Incluso el hecho de que el usuario se registre realmente no ayuda en sí mismo , solo pueden registrar otra cuenta.


Sé que este es un hilo viejo. En cualquier caso, sugiero usar evercookie ( http://samy.pl/evercookie/ ) para seguir a un usuario que ya votó.


También una posibilidad:

deja que el usuario vote y complete su emailaddress. El usuario recibe un email de confirmación con un enlace que debe hacer clic para confirmar su voto.

Pero de esta manera, el usuario también tiene bastante sobrecarga.

O haga esto en combinación con usuarios registrados (que no se verán obligados a confirmar)


Una vez creé un sistema de votación para un concurso. Me limitaron a limitar los votos por IP debido al hecho de que varias personas estarían votando legítimamente desde las mismas direcciones IP. Como tal, utilicé el método de confirmación por correo electrónico, requiriendo que cada votante ingrese una dirección de correo electrónico a la cual se envió un enlace de confirmación, que, una vez que se hace clic, activaría su voto y evitaría votos adicionales usando esa dirección.

No funcionó bien Las personas crearon cientos de direcciones de correo electrónico falsas en varios sitios gratuitos.

Lo que sí funcionó en la segunda vuelta fue, de manera algo sorprendente, agregar la dirección de correo electrónico / los pares de votos a una base de datos, pero no enviar inmediatamente los correos electrónicos de confirmación. En cambio, tuve un trabajo cron que enviaba el lote cada 15 minutos más o menos. Esto agrega una complicación adicional para las personas que registran muchas direcciones, ya que tienen que dejarlas todas abiertas o recordar la información de inicio de sesión para cada una de ellas en algún momento en el futuro.

Por supuesto, todavía se pasó fácilmente por alto para alguien motivado lo suficiente, pero parecía funcionar bien en este caso.


Use un enfoque basado en cookies, es lo suficientemente preciso para la mayoría de las encuestas de nivel de entretenimiento en la web. Manténgase alejado de las restricciones de IP. Esto significaría que solo una persona de las empresas más grandes puede votar y que solo una persona en una familia puede votar.


Ya has nombrado todas las soluciones utilizables. ;) Es su tarea decidir ahora.

Recomiendo combinar una IP y un control de cookies.