2009-02-07 16 views
6

Sto provando a fare un sondaggio ASP.NET (C#) che chiederà a un utente una domanda Sì/No e registri quel voto sul database . Per prevenire lo spam, vorrei essere in grado di assicurarmi che gli utenti possano votare solo una volta. Ho pensato di registrare l'indirizzo IP dell'utente. Se questa è la risposta, qualcuno può darmi un tutorial che mostra come questo può essere realizzato. Se questa non è la risposta, allora dammi i tuoi suggerimenti.Come assicurarsi che un utente possa votare una sola volta su un sondaggio ASP.NET

Modifica: Non sto chiedendo agli utenti di registrarsi perché questo non è il mio sito web.

+0

Questa sarebbe una domanda indipendente dalla lingua. :) – skiphoppy

+0

Uso solo ASP.NET e C#. Non conosco altre lingue eccetto C++ che non funziona per i siti web. Oh e alcuni JavaScript molto semplici. – Kredns

risposta

2

Collegato sessioni sono l'unico modo per prevenire le frodi doppio voto ma dal momento che esplicitamente chiedere un modo per registrare l'indirizzo IP, è possibile ottenere in quel attraverso:

HttpContext.Current.Request.UserHostAddress;

o

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

Dovrebbe essere abbastanza facile da salvare in DB e verificare se IP esiste già su ogni sondaggio.

+0

Questo è un po 'quello che stavo cercando. – Kredns

+0

Mentre questo ti dà un indirizzo IP, da solo, non è un indicatore particolarmente valido per il voto (come ho detto io e altri) –

+0

@Mitch Wheat, Questa è la pratica standard. Non è infallibile, ma questo è il modo accettato di affrontare il problema. Le suite di analisi contengono UU basate sullo stesso. Se hai qualche suggerimento a corto di fare in modo che l'utente si registri come suggerisce la tua risposta, mi piacerebbe saperlo. – aleemb

11

È possibile solo garantire che ciascun utente disponga di un voto se è possibile autenticare l'utente. Quindi avrai bisogno di un meccanismo di autenticazione che ti permetta di impedire all'utente di registrare più account.

Posso vedere questo lavoro solo in un ambiente in cui l'utente ha investito qualcosa nel suo account, come un abbonato per un giornale online o un sistema di reputazione come su StackOverflow.

+0

Questa non è una soluzione pratica. Non ha applicazioni al di fuori delle comunità chiuse. Il processo di registrazione ostacolerà solo i voti, rendendo questo approccio controproducente. – aleemb

4

Se si dispone di un elenco utenti registrati, inviare loro un'e-mail contenente un collegamento univoco che viene generato contenente un guid (ad esempio), registrare il GUID in un database e corrispondere al voto.

Se si parla di informazioni generalmente accessibili e sicure, l'indirizzo IP non è sufficiente (voto elettorale elettronico di Google per le numerose questioni relative al voto pubblico sicuro).

Hai mai pensato di utilizzare uno dei servizi di votazione gratuiti?

Condorcet Internet Voting Service

3

indirizzi IP non funzioneranno per i milioni di persone che stanno lavorando dietro un proxy pure.

I cookie sono una soluzione parziale, ma i robot di voto potrebbero semplicemente non inviare il cookie.

1

Avere una registrazione che richiede l'e-mail di conferma della registrazione e assicurarsi che l'indirizzo di posta elettronica sia una colonna univoca nel DB tra i propri utenti. Quindi lega il voto all'indirizzo email. Non impedirà completamente un burattino con più indirizzi e-mail, ma almeno non ne valuterà la pena.

+0

È meglio generare un numero univoco (GUID) per il voto una tantum di ogni utente ... –

4

Non è possibile limitare un singolo voto a un indirizzo IP. Un indirizzo IP non è uguale a un singolo utente. Un indirizzo IP rappresenta uno o più utenti.

0

Una combinazione di IP e useragent può darvi una soluzione ragionevole.

0

Accetto che un singolo indirizzo IP non corrisponda a un singolo utente, ma penso che sia il modo più sicuro di mantenere un voto per persona. Di solito uso i cookie per tenere traccia di chi ha votato. Ovviamente, questo è un trucco facile in cui puoi semplicemente cancellare i cookie e poi votare di nuovo.Se il voto è solo qualcosa di casuale, allora non mi interessa davvero. Se i voti corretti sono veramente importanti per la tua applicazione, allora usa l'indirizzo IP.

Problemi correlati