session - registros - ¿Cuál es un método confiable para registrar votos de usuarios anónimos, sin permitir duplicados?
quitar duplicados en excel con condicion (8)
Cualquier cosa basada en direcciones IP no es una opción; se ha mencionado el caso de NAT, pero esto parece ser solo en el caso de los usuarios domésticos. Hay muchas instalaciones más grandes que usan NAT: algunas empresas pueden tener miles de usuarios agrupados detrás de una sola dirección IP. También hay ISP que usan servidores proxy para sus usuarios, otro caso en el que puede tener miles de usuarios que aparecen en su aplicación como una sola dirección. Agregar combinaciones de UA únicas a esto no ayudará, ya que no hay suficiente variación.
Una cookie persistente será tu mejor opción, y tendrás que vivir con el hecho de que es fácil jugar. Al menos cuando la cookie es persistente (a diferencia de la sesión), atrapará a la mayoría de los usuarios que ejecutan un único navegador.
Si realmente desea confiar en los resultados, tendrá que agregar alguna forma de identificación en el proceso (como la validación del correo electrónico, que todavía es jugable).
Al final del día, cualquier encuesta en Internet tendrá fallas (como: ), y tendrá que vivir con esto
En primer lugar, busqué lo mejor que pude y leí todas las preguntas de SO que parecen relevantes, pero nada respondió específicamente a esto. Esto no es un duplicado, afaik.
Obviamente, si se permite la votación anónima en un sitio web, no existe una forma infalible de evitar que alguien vote más de una vez.
Sin embargo, me pregunto si alguien con experiencia puede ayudarme a encontrar una forma razonablemente confiable de rastrear visitas absolutamente únicas y registrar votos en contra de esas credenciales.
Actualmente me estoy asegurando de que solo se permite un voto por combinación de elemento / sesión, sin embargo, esto se evita fácilmente reiniciando el navegador, cambiando navegadores / computadoras o borrando los datos de la sesión.
La grabación en IP parece ser la próxima solución razonable, pero me pregunto si esto dará falsos positivos con demasiada frecuencia (varias personas en la misma LAN detrás de una NAT tendrán la misma IP externa, etc.).
¿Hay algún punto intermedio que tener aquí o algún otro método / combinación que estoy pasando por alto?
Dos ideas aún no mencionadas son:
- Pedir la dirección de correo electrónico del usuario y enviar un enlace de verificación por correo electrónico
- Usando un captcha
Obviamente, el primero se puede eludir con direcciones de correo electrónico desechables, y así sucesivamente, pero le da un seguimiento de auditoría, y proporciona un obstáculo significativo para el relleno de votos casual / bot. Un buen captcha también limita severamente el relleno de votos, pero con todas las advertencias habituales que rodean su uso.
La respuesta más simple es usar una cookie. Obviamente, es vulnerable a que las personas limpien sus cookies, pero la votación anónima es intrínsecamente aproximada de todos modos.
En la práctica, a menos que el tema que se vota sea de alguna manera controvertido o incendiario, las personas no van a tener un motivo detrás de manipular el voto de todos modos.
IP es más ''confiable'' pero producirá un nivel inaceptablemente alto de colisiones debido a los NAT.
¿Qué tal un identificador más único compuesto de IP + user-agent (quizás un hash)? Eso significa efectivamente para cada IP, cada par de versión exacta de OS / navegador obtiene 1 voto, que es mucho más cercano a 1 voto por persona. La mayoría de los navegadores brindan información detallada sobre la versión en el agente de usuario: no estoy seguro, pero mi intuición es que esto evitaría la mayoría de las colisiones causadas por los NAT.
El único lugar que aún produciría muchas colisiones es un entorno corporativo con una red estandarizada, donde todos usan una máquina idéntica.
Los chinos tienen que compartir una dirección IPv4 con cientos de otros; Hp / Compaq / DEC tiene casi 50 millones de direcciones. IPv6 no ayuda, ya que todos obtienen direcciones por mil millones. Una persona simplemente no es lo mismo que una dirección IP, y esa noción es cada vez más falsa.
Simplemente no hay formas adecuadas de hacer esto en Internet. Las personas son simplemente un concepto desconocido en Internet, y cualquier idea para introducir el concepto es poco probable que tenga éxito. (Demasiados gobiernos no querrían que esto sucediera, por ejemplo).
Por supuesto, puede relacionar la cantidad de votos por IP con la cantidad de visitas repetidas a esa IP, especialmente en combinación con el seguimiento de cookies. Esto funciona mejor si estima ese número antes de comenzar el período de votación. Si los artículos populares del 5% superior generalmente se leen 10 veces desde una sola IP, es probable que 10 personas compartan esa IP y obtengan 10 votos. Las cookies se pueden utilizar para evitar que se roben el voto de los demás, pero en general no pueden sesgar su encuesta. (Nota: esto falla en comunidades pequeñas donde un gran grupo de votantes proviene de un pequeño número de IP, en particular, esto sucede en las universidades).
Recolectaba la mayor cantidad posible de datos sobre la sesión sin hacer preguntas directamente (navegador, sistema operativo, complementos instalados, todos con números de versiones, direcciones IP, etc.) y lo hacía con hash.
Registre el hash e incremente un contador si quiere que se permitan múltiples votos. Incluya una marca de tiempo (diaria, horaria, etc.) en la sal para hacer que los votos sean sensibles al tiempo, digamos 5 votos por día.
Si no está buscando autenticar a los votantes, entonces obtendrá algunos votos duplicados sin importar lo que use. Usaría una cookie y habría terminado con los usuarios anónimos.
UserVoice permite votar y votar anónimamente cuando inicia sesión, pero luego permite que el administrador filtre los votos anónimos, una buena solución a este problema.
Tengo el mismo problema, y esto es lo que planeo hacer ...
Establecer una cookie persistente. Verifique la cookie para decidir si se puede emitir un voto en particular. Además, almacene algunos datos sobre la solicitud de voto en forma de una combinación de dirección IP + agente de usuario. Y luego usa este valor para limitar el no. de votos a, digamos, 10 por día.
¿Cuál es la mejor manera de crear este hash (IP + UA String)?
Use una cookie persistente para permitir solo un voto por artículo
y registrar el IP, si hay más de 100 (1,000? 10,000?) solicitudes en menos de X minutos y luego "bloquear en bloque" el IP
El "bloque suave": no muestre una página que diga "su IP ha sido bloqueada", pero muestre su página de "gracias por su voto" y NO grabe el voto en su base de datos. Incluso puede aumentar el contador solo para esa IP. Desea evitar que sepan que está bloqueando su IP.