No hay absolutamente nada en los métodos de autenticación OpenID / OAuth que garantice que un inicio de sesión individual a través de ellos sea realmente un usuario único. OpenID proporciona un poco más de datos en forma de certificado (nombre de usuario, dirección de correo electrónico y notario ) que la autenticación valet key de OAuth, pero eso solo no es suficiente para evitar la votación de fraude . Usar la palabra fraude en este sentido es un poco grave en mi opinión, tal vez abusar sea más adecuado. En cualquier caso, veamos qué información de otro puede utilizar en su aplicación web y qué significa para su sistema de votación:
-
Dirección IP : no es adecuado, ya que la mayoría de los usuarios obtienen su IP asignada por un servidor DHCP y es dinámica (se puede asignar a otro usuario más adelante, o el mismo usuario puede solicitar uno nuevo), diferentes usuarios pueden acceder a su sitio web a través de la misma IP (las organizaciones y otras personas que utilizan servidores proxy, usuarios móviles de IPv6 a través de un intermediario de IPv4, etc.), o la misma persona podría utilizar otros medios para acceder a su sitio web con una IP diferente (red TOR, VPN, ...)
-
ID de sesión : consiste en una cookie de sesión (o alguna forma de un valor de consulta de solicitud persistente en sesiones sin cookies), comúnmente también una cadena de usuario-agente (cadena de identificación del navegador), y la IP que ya cubierto Ninguno de estos (por sí solo, o sesión en su totalidad) garantiza que un usuario único haya iniciado sesión, ya que simplemente puede cambiar a diferentes navegadores, borrar la sesión del usuario mediante la eliminación de cookies o incluso cambiar la firma del navegador. Todo lo cual puede invalidar la sesión del usuario y se realizará una solicitud de una nueva.
-
Cadena de referencia : no es adecuada por sí sola, ya que puede ser falsificada o simplemente reutilizada muchas veces.
Esto te deja en cualquiera de los dos:
- Confiando en Facebook y Twitter para hacer su propia detección de múltiples cuentas por usuario,
- Solicitar una autenticación de usuario adicional que intente detectar dicho abuso (podría ser imposible hacerlo mejor que lo que ya existe en Facebook y Twitter),
- Cambiar a votar con una boleta (solo con invitación una vez), o
- Tenga en cuenta el posible abuso de voto cuando presente resultados (como promedios ponderados ).
Las tres últimas opciones son bastante difíciles de implementar y podrían no estar dentro del presupuesto de su proyecto, que es, al final del día, el factor más decisivo sobre cuál de estas opciones podría o debería implementarse.
En una nota al margen, quería darles un buen ejemplo del promedio ponderado, pero el problema es que todos los sistemas que se preocupan por la validez de estos métodos no publican intencionalmente su funcionamiento interno, para evitar más abusos por parte de Eludiendo el sistema en su lugar. Uno de los sitios web que utiliza este tipo de mecanismos de votación y se sabe que pone mucho esfuerzo es IMDB (usted ser el juez sobre cuán efectivo es eso, reservaré mis comentarios), y hay muchos otros con implementaciones totalmente diferentes. Incluso StackExchange tiene algún tipo de prevención de votación en serie, pero los detalles al respecto también son bastante escasos.