¿Cómo manejas el voto público (a alguien le puede "gustar o no" un artículo) y restringirlo a votar solo una vez?
¿Tengo que usar cookies? (con el problema de que puede eliminar la cookie y votar x999 veces) o ¿guardo su IP en la base de datos?
5 respuestas
La solución tiene tres partes:
- use una cookie para evitar el doble voto
- almacenar todos los eventos de votación en la base de datos (ip, agente de usuario, identificación de encuesta / artículo, votación)
- implementar un algoritmo que se ejecutará cada 24 h para eliminar los dobles votos que escaparon del # 1. El algo usará datos del # 2
Usar solo la IP no es apropiado, ya que puede dejar a toneladas de personas fuera del sistema de votación.
Si el usuario se autentica, es decir, vota como sí mismo, arroje un registro en la base de datos que indique que el usuario ya ha votado. Para los votantes anónimos, está limitado a cookies, almacenamiento local, etc.
Yo diría que haga ambas cosas para que si hay personas con IP dinámica, tengan que cambiar la IP y eliminar las cookies al mismo tiempo.
En lugar de cookies, podría usar evercookie, que es mucho más difícil (pero aún posible) omitir.
evercookie es una API de JavaScript disponible que produce cookies 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.
Usa la IP.
Si bien es posible que muchas personas voten solo una vez desde detrás de una IP, la alternativa es trivial para evitar (no almacenar cookies).
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.