2009-06-10 10 views
18

Me gustaría implementar un sistema de votación en mi sitio, sin tener que obligarlos a crear una cuenta. En última instancia, votarán hacia arriba o hacia abajo una parte del contenido que tiene una ID única.Implementación de un sistema de votación sin necesidad de registro

  • Sé que podría almacenar entradas en una tabla con IP/ID, pero ¿qué sucede si hay más de un usuario procedente de la misma IP?
  • ¿Hay alguna forma de identificar a los visitantes de forma única sin que esté vinculado a su IP externa?
  • Si creó un GUID, lo almacena en una cookie en esa máquina, ¿podría recuperarlo más tarde en la misma computadora con la misma IP? Una IP diferente?

Cualquier idea sobre estas preguntas, o cualquier idea de un mejor enfoque sería muy apreciada.

+0

¿Qué impide que alguien vote hacia arriba o hacia abajo una publicación 50 o 100 veces? – matpie

+4

Creo que esa es la intención de la pregunta: ¿cómo puedo evitar que la misma persona vote arriba/abajo varias veces? – Nate

+0

Sí, la idea detrás de la pregunta es evitar el abuso, pero diseñe un sistema que no requiera registro – barfoon

Respuesta

21

Sí, podría usar una cookie y establecer la caducidad muy lejos en el futuro; sin embargo, no hay nada que impida que alguien borre su caché y vuelva a votar.

Su mejor opción es utilizar la cookie y no permitir votos desde la misma IP dentro de los 15 minutos de diferencia ... sin registro, eso es lo mejor que puede hacer.

+0

Creo que implementaré algo como esto, o una cantidad máxima de votos sobre porciones únicas de contenido por día. Gracias por su entrada, – barfoon

+3

, hay muchos usuarios procedentes de la misma IP (AOL, por ejemplo) y la mayoría de las personas todavía usan IE, por lo que almacenar información relacionada con el navegador no ayudará. También hay una cantidad de personas que no permiten que se guarden las cookies (no una gran cantidad). Parece que la votación no es tan rígida, por lo que sugeriría crear un valor aleatorio que almacene en la cookie y DB de forma única (en la medida en que pueda) identificar a alguien – meade

+0

Eso simplemente no es cierto; cada cliente de AOL tendrá su propia dirección IP, hasta que se desconecte y se le asigne una nueva dirección IP. Es poco probable que un usuario obtenga una dirección IP de AOL, vote en este sitio web, desconecte y haga que otro usuario se conecte a AOL para obtener la misma dirección IP y trate de votar en este sitio. - Como dije en mi publicación sin registro, es lo mejor que puedes hacer. No es a prueba de tontos pero evitará abusos extremos. – Nate

3

En principio, es imposible para usted, utilizando una cookie, distinguir entre un visitante que nunca ha visitado y un visitante que ha visitado pero eliminado la cookie. En consecuencia, cualquier solución basada en cookies será vulnerable al fraude de voto trivial.

Considere abrazar esta realidad en el espíritu de J Henry Lowengard, quien, al configurar la top 100 site on WFMU volver a mediados de la década de 1990, a condición de un botón en el "tu voto ha sido contado" página denominada "volver atrás y votar mayor! "

De hecho, go there now y vote por (o en contra) de StackOverflow!

4

Podrías permitirles iniciar sesión usando OpenId, esto les permitiría usar una cuenta existente para votar y no tendrían que crear una nueva cuenta.

Google y Yahoo y otros tienen servicios que le permiten autenticar usuarios.

Si no autenticas a los usuarios de alguna manera, el sistema de votación me abrirá a abusos.

+5

Se abrirá para abuso, punto. La cantidad de cuentas de OpenId que uno puede tener no está limitada. De hecho, es bastante sencillo convertirse en proveedor de OpenId y generar un número infinito de cuentas OpenId con muy poco esfuerzo. –

+1

No tiene que permitir cuentas de todos los proveedores de OpenID. –

8

Puede identificar a los usuarios en función de algo más que su IP. Por ejemplo, podría incluir el IP + toda la información del encabezado de la solicitud (como el navegador, los números de versión, las capacidades) y el hash. Eso identificará de manera más o menos única a su usuario (no al 100%, lamentablemente)

+3

Si alguien probara una forma de jugar con el sistema, probablemente intente cambiar la cadena de su navegador con bastante rapidez. – Hardwareguy

+1

El problema con hash todo junto es que estás perdiendo datos. Es razonable decir que todos esos datos son probablemente únicos, pero en realidad le da al usuario malintencionado una ventaja ya que, como señala Hardwareguy, puede cambiar solo un elemento y parecer ser un usuario completamente diferente. En cambio, creo que es mejor rastrear algunos elementos diferentes teóricamente únicos, y si alguno de ellos ya apareció, denegar. – dimo414

+0

La mayoría de los spoofing que he visto solo estaban en un encabezado: User-Agent. La mayoría de los navegadores también envían otros encabezados: Aceptar, Aceptar idioma, etc. Si ve varias solicitudes de la misma dirección IP con un encabezado cambiando y otras permaneciendo iguales (o todas cambiando a la vez, posiblemente a valores extraños como 'Aceptar idioma : x-piglatin'), probablemente tenga un spoofer. – Piskvor

3

El agente de usuario de IP + es mucho más exclusivo que IP; no estoy seguro de si es adecuado para sus propósitos. Si les envía una cookie, esa computadora los devolverá (si usan el mismo navegador) mientras la cookie permanezca, independientemente de la IP, pero tenga en cuenta que el usuario puede deshacerse de la cookie cuando lo desee. .

Si le preocupa en absoluto el uso de este sistema para evitar el fraude electoral, no creo que vaya a poder hacer que tengan una cuenta.

0

Otra opción sería usar la sesión. Le permitiría almacenar la identificación de la sesión junto con la IP. Eso le permitiría obtener múltiples IP pero de diferentes sesiones.El único defecto de eso sería la posible conmutación de navegadores. Agregar una cookie para convertirlo en un trío podría ayudar a eliminar las inundaciones.

He hecho esto en el pasado con solo una dirección IP, que parece funcionar a pequeña escala.

1

Estoy pensando en el mismo problema en este momento. mis posibles enfoques serán las siguientes:

  • (A) se puede aceptar los votos de las personas que estaban en su sitio (usando SESIONES) durante al menos 15 minutos (puede ser el tiempo aproximado para un usuario leer un artículo en un blog/sitio). cuando voten, el cronómetro se reiniciará para la próxima votación. así que de esta manera, ya no tiene sentido eliminar las cookies para los usuarios.

  • (B) puede aceptar los votos de personas no registradas y tomar su dirección de correo electrónico y enviarles un enlace de verificación a su voto. cuando hacen clic en el enlace de verificación en su casilla de correo electrónico, entonces puedes contar el voto. es como votar por dirección de correo electrónico.

  • (C) combinación de (A) y (B). De esta manera usted puede estar seguro de que va a enviar enlaces de verificación sólo cada 15 minutos para un solo usuario que no será mucho :)

0

Usted podría intentar Evercookie o similares soluciones.

1

sé que esto es viejo, pero acaba de llegar aquí y tenía una idea ..

¿Qué pasa algo parecido https://panopticlick.eff.org? Sin embargo, otra cosa se podría lanzar en ..

(Si alguna vez se queda sin conexión: Se trata de una huella digital acumulativa hecha de la materia habitual más + Browser Plugin Detalles + zona horaria + Tamaño de pantalla y profundidad de color + Fuentes del sistema + supercookies )

Cuestiones relacionadas