2009-02-07 33 views
6

Estoy tratando de hacer una encuesta ASP.NET (C#) que le pregunte a un usuario una pregunta Sí/No y registre esa votación en la base de datos . Para evitar el correo basura, me gustaría asegurarme de que los usuarios solo puedan votar una vez. He pensado en registrar la dirección IP de los usuarios. Si esta es la respuesta, ¿alguien puede darme un tutorial que muestre cómo se puede lograr esto? Si esta no es la respuesta, entonces dame tus sugerencias.Cómo asegurarme de que un usuario solo puede votar una vez en una encuesta de ASP.NET

Edit: No pido a los usuarios que se registren ya que este no es mi sitio web.

+0

Esto sería mejor como una pregunta independiente del idioma. :) – skiphoppy

+0

Solo uso ASP.NET y C#. No conozco otros idiomas, excepto C++, que no funciona para sitios web. Ah, y algunos JavaScript muy básico. – Kredns

Respuesta

2

conectados en sesiones son la única forma de evitar el fraude de doble votación, pero ya que preguntas explícitamente una manera de registrar la dirección IP, se puede conseguir en que a través de:

HttpContext.Current.Request.UserHostAddress;

o

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

Debe ser lo suficientemente fácil como para guardar en DB y comprobar si la IP ya existe en cada encuesta.

+0

Eso es un poco lo que estaba buscando. – Kredns

+0

Si bien eso le da una dirección IP, por sí solo, no es un indicador particularmente bueno para votar (como yo y otros hemos mencionado) –

+0

@Mitch Wheat, esta es la práctica estándar. No es a prueba de tontos, pero esta es la forma aceptada de abordar el problema. Las suites de análisis cuentan UU basadas en la misma. Si tiene alguna sugerencia, salvo que el usuario se registre como lo sugiere su respuesta, me gustaría saberlo. – aleemb

11

Solo puede garantizar que cada usuario tenga un voto si puede autenticar al usuario. Por lo tanto, necesitará un mecanismo de autenticación que le permita evitar que el usuario registre varias cuentas.

Solo puedo ver este trabajo en un entorno en el que el usuario ha invertido algo en su cuenta, como un suscriptor de un periódico en línea o un sistema de reputación como en StackOverflow.

+0

Esta no es una solución práctica. No tiene aplicación fuera de las comunidades cerradas. El proceso de registro solo obstaculizará los votos, lo que hace que este enfoque sea contraproducente. – aleemb

4

Si tiene una lista de usuarios registrados, envíeles un correo electrónico que contenga un enlace único que se genere con un guid (por ejemplo), registre el GUID en una base de datos y haga coincidir la votación.

Si está hablando de acceso público general y seguro, entonces la dirección IP por sí sola no es suficiente (votación electoral electrónica de google para los muchos asuntos relacionados con la votación pública segura).

¿Ha pensado en usar uno de los servicios de votación gratuita?

Condorcet Internet Voting Service

3

direcciones IP no funcionarán para los millones de personas que están trabajando detrás de un proxy también.

Las cookies son una solución parcial, pero los robots de votación simplemente no pueden enviar la cookie.

1

Tenga un registro que requiera la confirmación por correo electrónico del registro y asegúrese de que la dirección de correo electrónico sea una columna única en el DB entre sus usuarios. Luego ate el voto a la dirección de correo electrónico. No impedirá por completo que un muñeco de calcetines tenga múltiples direcciones de correo electrónico, pero al menos hará que no valga la pena el esfuerzo para la mayoría.

+0

Mejor generar un número único (GUID) para el voto único de cada usuario ... –

4

No puede limitar un solo voto a una dirección IP. Una dirección IP no equivale a un solo usuario. Una dirección IP representa uno o más usuarios.

0

Una combinación de IP y useragent puede darle una solución razonable.

0

Acepto que una sola dirección de IP no corresponde a un solo usuario, pero creo que es la forma más segura de mantener un voto por persona. Usualmente uso cookies para hacer un seguimiento de quién ha votado. Por supuesto, este es un truco fácil donde puedes simplemente eliminar las cookies y luego votar de nuevo.Si el voto es solo algunas cosas al azar, realmente no me importa. Si los votos correctos realmente importan para su aplicación, entonces use la dirección IP.

Cuestiones relacionadas