2009-08-07 16 views
6

Lo que realmente quiero es limitar 1 voto por persona, pero la siguiente mejor cosa que puedo pensar es límite de 1 voto por dirección IP para evitar que usuarios maliciosos/hackers gravemente templado con sistema de votación de mi empresa. Estaba pensando en usar una base de datos para hacer un seguimiento de las direcciones IP.¿Límite de 1 voto por dirección IP?

Actualización: Disculpa por no ser claro en el primer momento aruond. Lo que quería saber si limitar 1 voto por dirección IP era una buena estrategia para limitar 1 voto por persona. Básicamente, quería saber si 1 dirección IP única es aproximadamente igual a 1 persona. Las personas ya han mencionado que los proxies y enrutadores reutilizan las direcciones IP, por lo que desafortunadamente muchas personas pueden estar usando la misma dirección IP.

Gracias. Creo que, en mi caso, lo mejor es NO limitar 1 voto por dirección IP.

+2

¿Cuál es su pregunta? – Nate

+2

La existencia de servidores proxy y direcciones ip dinámicas arruina su plan. –

+0

Pero es mejor que nada. – Amber

Respuesta

18

Yo sugeriría que no va con el enfoque IP. Cuando miré esto antes, algunos de sus ISP grandes reutilizan mucho las direcciones IP (AOL ...), pero si usa direcciones IP, use una base de datos para rastrearlas. Una forma rápida de hacerlo es convertirlo en una clave única y detectar la excepción como "ya votado".

Una cosa buena para agregar es no mostrarle a un usuario que su voto no fue contado, simplemente muestre los resultados, o agradézcales por votar. Al no dar ese error específico, es más difícil y, a veces ni siquiera notado por los usuarios problemáticos.

+2

otra cosa que he encontrado que funciona bien ... agregar un retraso de temporizador creciente para el usuario si tienen una cookie. Claro que podrían eliminarlo, pero una vez más, no mostrar que en realidad estás haciendo algo, y demorar lentamente en votar cada vez ralentizará los scripts de votación hasta el punto de que realmente no funcionan. (Podría hacer lo mismo con las direcciones IP). NOTA: Esta es también una buena técnica para nombre de usuario/contraseñas en lugar de bloquear cuentas. – RiddlerDev

+0

No creo automáticamente que los scripts de votación se programen, incluso publiquen los datos de las cookies. Aparte de javascript (dentro de un navegador), no he visto ningún idioma que haga esto por defecto. ruby, php, python parecen hacer que agregues manualmente el encabezado de la cookie a una solicitud. – complistic

1

Sí, base de datos de uso. No confíe en las cookies, se pueden eliminar fácilmente.
IMO, hasta ahora, la limitación de emisión basada en IP es la mejor opción.

+0

-1 para el bloqueo basado en IP: desafortunadamente hay una cantidad muy poco trivial de sitios en Internet que tienen muchos usuarios detrás de una sola IP. –

+0

Sí, pero es la única forma de trabajo si desea suprimir las trampas de votación. –

+0

@AndrejsCainikovs: en todos los casos teníamos la dirección IP como una opción complementaria, los tramposos siempre tenían un suministro inagotable de ellos para usar. Entonces, podría ayudar contra mi hermano menor. No esta mal; pero tenga en cuenta que es solo una medida provisional contra la fruta de bajo costo, no es una solución completa. – Piskvor

4

Generalmente, sí, lo que haría es tener una tabla de base de datos para los votos, y simplemente almacenar la opción + dirección IP - luego al insertar, haga una consulta DB para ver si ya existe una entrada con la IP dada.

La solución ideal sería atar los votos a cuentas de usuario que a su vez están vinculadas a una presencia más concreta (como una tarjeta de crédito, teléfono celular u otra fuente de identidad de multiplicación menos fácil).

¿Qué es exactamente la pregunta que estás haciendo?

12

Si usa direcciones IP, limitará a la mayoría de las empresas a un solo voto porque enrutan todo el tráfico de Internet saliente a través de un cortafuegos o un servidor proxy. Hicimos esto hace un par de años y descubrimos que todo el tráfico de AOL provenía de solo 5 direcciones IP.

+0

Tuviste problemas con AOL también ¿eh? – RiddlerDev

0

La dirección IP tiene sus limitaciones, como hemos señalado anteriormente, pero hay muchas otras características que tiene un navegador que puede apaciguar a los votantes malintencionados. BrowserID, por ejemplo, es diferente para casi todos los navegadores. Podría usar una combinación de BrowserID y dirección IP para crear una ID única.

2

La forma en que siempre lo he hecho es concaturar el agente de usuario y la dirección IP en un hash MD5 (en algunos casos esto permitirá votar a personas de la misma IP, siempre que utilicen diferentes navegadores) y almacenar que como una "huella digital" para el voto, escriba la base de datos y añádale una clave única. Como dijo IPX Ares, desde allí puedes ver la excepción de la clave duplicada, y deberías estar bien.

Si desea permitir que las personas voten una vez al día, también puede agregar Ymd a esa "huella dactilar" u otras variaciones para permitir x cantidad por hora o x cantidad por día.

+1

Esto mejora un poco las cosas, pero aún no soluciona el problema con usuarios corporativos lo suficientemente bien. En una empresa, es probable que muchas personas tengan el mismo agente de usuario y estén detrás de un cortafuegos que muestre como una sola dirección IP. –

0

Otra forma de "ayudar" a evitar las trampas es proporcionar un hash de uso de 1 vez en el formulario y luego verificar si eso es válido antes de contar el voto.

Por ejemplo:

Cuando se crea el formulario de voto que hacen un hash al azar y lo almacenan en la base de datos y la puso en el form como un campo hidden. (puede ser que desee añadir un campo de fecha a la base de datos de hash para que pueda limpiar los hashes no utilizados)

Entonces, cuando llegue un voto POST solicitud se puede comprobar si el hash suministrado está en la base de datos y extraerla de la base de datos por lo que no se puede utilizar de nuevo.


CONTRA:
se carguen la base de datos con alta IO si la página de votación tiene un alto tráfico.
No se puede almacenar en caché la página como plan html, por lo que pone más énfasis en la aplicación web.