2009-02-21 2 views
24

Sto pianificando di aggiungere alcuni pulsanti di voto/votazione verso il basso su un sito Web che eseguo. Questo sembra abbastanza facile, ma voglio smettere di votare più volte. Una soluzione sarebbe quella di farli registrare prima di consentire loro di votare, ma preferirei non dover forzarli a registrarsi.Arresto di utenti che votano più volte su un sito Web

C'è un modo ragionevolmente semplice per farlo? Controllare l'indirizzo IP non sembra una buona soluzione, poiché è possibile che più utenti possano provenire dallo stesso indirizzo IP.

I cookie potrebbero essere la risposta, ma un utente esperto potrebbe eliminare il cookie. Qualche idea migliore?

risposta

-1

Hai già nominato tutte le soluzioni utilizzabili. ;) È tuo compito decidere adesso.

Si consiglia di combinare un controllo IP e cookie.

+0

I cookie sono sotto controllo del cliente e quindi facili da evitare. IMO non raccomandabile. – Treb

0

Non esiste un modo preciso per evitare più voti da parte dello stesso utente, anche se non eliminano i cookie, possono utilizzare un altro browser o un altro computer.

7

Penso che in realtà dipenda dalla natura del tuo sito web e da quanto i tuoi risultati debbano essere precisi.

L'utilizzo di un cookie sembra l'opzione migliore, ma dipende dal pubblico di destinazione del tuo sito web. Sarebbero abbastanza esperti di tecnologia per cercare di battere il sistema per consentire loro di votare più volte? In caso contrario, il rischio dovrebbe essere abbastanza basso e questo sembrerebbe l'approccio migliore.

Il controllo su un indirizzo IP, come hai detto, potrebbe essere troppo restrittivo. Ma se è fondamentale che tutti i voti siano tratti da individui unici, questo potrebbe essere l'approccio migliore anche se ciò significa che alcuni elettori legittimi non potranno votare.

Ho pensato a un'altra opzione, ma non sono sicuro che sia possibile o fattibile. Se fosse possibile combinare l'approccio dell'indirizzo IP con un controllo basato sull'hardware (ad esempio l'indirizzo MAC della scheda NIC), ciò eliminerebbe l'approccio dell'indirizzo IP troppo restrittivo a causa del NAT all'interno di una LAN. Ma non aiuterebbe la situazione in cui si dispone di un computer in un Internet café utilizzato da persone diverse.

È necessario utilizzare anche captcha (per gli account non registrati) per ridurre la probabilità di bot di voto. Se qualcuno vuole lanciare più di una mossa di voti, rendendo più difficile per loro automatizzare il processo di votazione tramite i bot, si contribuisce a ridurre eventualmente il verificarsi di tale comportamento.

+0

Gli indirizzi MAC non sono esposti nelle intestazioni http. Quindi un sito web non può usarli – DanSingerman

+0

@HermanD - Sì, quello era un suggerimento stupido ora che ci penso. Forse un altro campo nel segmento TCP o intestazione IP che è unico? L'unico problema è che la connessione TCP verrà ripristinata ogni volta, quindi neanche questo sarà fattibile. – LeopardSkinPillBoxHat

+0

@LeopardSkinPillBoxHat: inoltre, senza alcuni attacchi a livello di profondità del server Web, non otterrete i dati TCP dall'app HTTP (e questa è una buona cosa, la maggior parte del tempo) – Piskvor

0

Penso che dovresti registrare l'utente prima di votare su/giù. Puoi ottenere una piccola informazione da parte dell'utente per registrarti, quindi non annoia o interrompe la sua registrazione. Successivamente potrà aggiornare il suo account, se lo desidera. IMHO questa è la soluzione migliore.

21

Spiacente, non ho una risposta utile, voglio solo condividere la mia esperienza.

Circa 8 anni fa ho lavorato per un sito che eseguiva sondaggi online. Una volta siamo stati hackerati da alcuni robot che votavano su alcune delle nostre domande diverse centinaia di voti al minuto.

Ho dovuto implementare alcuni controlli di emergenza: indirizzo IP, cookie e davvero non ricordo cos'altro.

Alla fine della giornata abbiamo deciso di abbattere i sondaggi. A quei maledetti robot non importava. Gli indirizzi IP sono stati falsificati, i cookie venivano eliminati, ecc.

Se davvero i sondaggi sono davvero imperdibili, non vedo nessun altro modo che richieda la registrazione e l'utilizzo di captcha per evitare che i bot si registrino per nuovi account.

E la cosa triste è che questo era solo un sito di intrattenimento con sondaggi su qual è il tuo colore preferito e cose del genere.

L'unica cosa che non abbiamo provato era usare i captcha perché non esistevano al momento. Ciò potrebbe aver ridotto un imbroglio non umano molto.

Non prendere questo come una sorta di parere di esperti in materia, perché quella era l'unica volta che avevo qualcosa a che fare con sondaggi online, ma mi ricordavo la mia storia e volevo condividere.

+0

Non è possibile falsificare un indirizzo IP? – Sam152

+3

In circostanze particolari, sì è possibile. Inoltre, ci sono proxy e altri mezzi per cambiare il tuo IP, e botnet e router hacking e quant'altro. Gli indirizzi IP sono ancora validi per molti usi, ma Fort Knox non sono –

+2

Non sono un esperto di TCP/IP, ma suppongo che dovresti essere in grado di falsificare facilmente un indirizzo IP a livello di pacchetto se tutto quello che ti interessa è fare una richiesta (come in un attacco DoS) e non ci si aspetta di ottenere la risposta. Ma so che potrei sbagliarmi. –

6

Quindi, si desidera che ogni persona unica abbia un solo voto per ciascun elemento. Quando una persona prova a votare chi ha già votato prima, vuoi rilevarlo. Ciò significa che devi identificare la persona. Non ci sono trucchi per aggirare questo.

Ora, poiché le persone possono accedere da qualsiasi computer, l'identificazione del computer non è di aiuto. Questo esclude controlli e cookie IP, così come qualsiasi altra cosa basata sull'hardware dell'utente.

Come identificare una persona? Non puoi Puoi solo costringerli a identificarsi, fornendo credenziali uniche, come un numero di previdenza sociale (penso che questo sia spesso usato in Corea), un numero di passaporto o simili. Questo, ovviamente, non aiuta se non lo controlli, dal momento che chiunque può creare un numero di 10 cifre con poche possibilità di collisione.

Anche avere il registro utente non aiuta veramente di per sé - possono semplicemente registrare un altro account.

+0

sì, ma molto probabilmente non registreranno tonnellate di account solo per il falso di pochi voti :) – Gigala

0

Come è stato detto, non esiste una soluzione "perfetta".

Come tentativo di una soluzione imperfetta, che ne dici di memorizzare un hash dell'indirizzo IP e dell'agente utente.

Ciò significherebbe che utenti diversi da un dato IP, che hanno diversi agenti utente del browser, possono ancora votare.

0

Utilizzare un approccio basato sui cookie, è abbastanza accurato per la maggior parte dei sondaggi di intrattenimento sul web. Stai lontano dalle restrizioni IP. Ciò significherebbe che solo una persona delle società più grandi può votare e che solo una persona in una famiglia può votare.

+0

Che dire di quelli che navigano con i cookie bloccati di default? – random

+0

Non possono votare. – cdonner

4

Mi chiedo se si potrebbe fare un processo in più fasi, per renderlo più difficile per i BOT.

La registrazione, o qualche attività simile, ti porta Cookie-A, e poi quando voti ottieni Cookie-B, ma se hai Cookie-B e non hai un cookie di corrispondenza adatto-A il tuo voto non lo fa conta. Se provi a registrare nuovamente sulla stessa macchina che può essere rilevata da te già in possesso di Cookie-A. Passare attraverso i passaggi troppo velocemente viene trattato come un BOT.

Abbiamo fatto un test psicometrico, con molte domande, e gli utenti hanno dovuto dare risposte ponderate. Una risposta in sub-N secondi era che qualcuno premeva semplicemente i pulsanti per superarlo. Non abbiamo mai detto loro che la loro risposta era troppo veloce, abbiamo semplicemente contrassegnato i dati come "sospetti".

Quindi chiunque cerchi di passare direttamente al pulsante Vota non funzionerà. Dovrebbero fare Step-A, poi Step-b poi Step-C in ordine.

Per ri-votare dovrei cancellare i cookie, registrarmi nuovamente, leggere la pagina descrittiva (qualsiasi cosa) e infine votare nuovamente, tutto nell'ordine corretto e non troppo veloce.

La richiesta di JavaScript per essere abilitata può essere d'aiuto, così come un sistema Captcha. Captcha potrebbe avere una sorta di ritardo - "Per favore guarda come appaiono le due parole" in modo che ci siano due parole, mostrate una dopo l'altra, ma "parole reali" in modo che possano essere facilmente memorizzate e poi digitate. Qualsiasi risposta che è "troppo veloce" non è valido.

A un certo punto le persone si arrabbieranno e non si preoccuperanno.

0

anche una possibilità:

lasciare che il voto degli utenti e compilare le sue emailaddress. L'utente riceve una conferma tramite posta elettronica con un link su cui deve fare clic per confermare il suo voto.

Ma in questo modo, l'utente ha anche un po 'di spese generali.

O fare questo in combinazione con allsimpiego raccomandata (che non sarà costretto a confermare)

3

Ovviamente è necessario identificare l'utente, così da poter votare una sola volta. Ma identificare l'utente non significa che devi aprire una schermata di accesso. Come detto sopra puoi chiedere l'indirizzo email , e usarlo come identificatore.

Nessuno menziona il modo in cui funziona lo stackoverflow, se l'utente ha qualcosa da vincere (qui la rettifica) quando diventa un utente registrato e se il processo di accesso è semplice come dare un indirizzo email, allora questa è una situazione win-win in che l'utente è felice di accedere e votare, e sei felice di averlo registrato e votato (e solo una volta per ogni domanda).

Jeff Atwood ha scritto an article about the "login barrier", che potrebbe darti degli indizi.

3

Una volta ho creato un sistema di votazione per un concorso. Mi è stato impedito di limitare i voti per IP a causa del fatto che più persone avrebbero legittimamente votato dagli stessi IP. Come tale, sono andato con il metodo di conferma dell'email, richiedendo a ciascun elettore di inserire un indirizzo di posta elettronica a cui è stato inviato un link di conferma, che, una volta cliccato, attivava il proprio voto e preveniva ulteriori voti utilizzando quell'indirizzo.

Non ha funzionato bene. Le persone hanno creato centinaia di indirizzi email falsi su vari siti gratuiti.

Che cosa ha funzionato nel ballottaggio, in qualche modo sorprendentemente, è stato aggiungere le coppie indirizzo/voto di posta elettronica a un database ma non inviare immediatamente le e-mail di conferma. Invece, ho avuto un cron job per inviare il batch di questi ogni 15 minuti circa. Ciò aggiunge un'ulteriore complicazione per le persone che registrano molti indirizzi, in quanto devono lasciarle tutte aperte o ricordare le informazioni di accesso per ognuna di esse in futuro.

Naturalmente, ancora facilmente aggirato per qualcuno motivato abbastanza, ma sembrava funzionare bene in questo caso.

1

Non ho mai utilizzato un sistema come questo, ma provo a identificare un utente tramite l'impronta digitale del browser. Questo jQuery plugin combina dimensioni dello schermo, profondità del colore, fuso orario dell'utente e plug-in installati per creare un ID univoco di un utente. Sicuramente non infallibile, ma è un approccio diverso.

0

So che questo è un thread precedente. In ogni caso suggerisco di usare evercookie (http://samy.pl/evercookie/) per tracciare un utente che ha già votato!

0

È questione di quante identità una singola persona può controllare. Più è difficile per una singola persona controllare più identità, più sicuro sarà il sondaggio.

Per sondaggi di livello intrattenimento in cui i risultati non sono importanti, è sufficiente un approccio con cookie singolo. Molto facile da aggirare se l'utente apre finestre icognito.

È possibile ottenere una protezione migliore se si inserisce una barriera di registrazione, è possibile utilizzare gli accessi basati su OAuth per l'autenticazione senza interruzioni, sarebbe necessario un certo impegno per cambiare account per ottenere più voti. Ma questo non impedisce ai disperati di votare più volte.

Ancora meglio se si invia il codice di conferma in SMS. Sebbene le persone possano possedere più numeri di telefono, non è comune avere un numero considerevole di numeri di telefono per eseguire una frode. Ma questo approccio costa per te e può essere sfruttato da DoSing sul server per esaurire tutti gli SMS.

Se si desidera sondaggi di livello governativo, in cui i voti possono decidere le elezioni. Quindi gli elettori devono presentarsi all'ufficio di registrazione per richiedere il sondaggio e consentire loro di sceglierne uno dalle buste PIN preparate, che contiene un hash lungo che possono inserire quando si esegue il voto. Quindi, a meno che gli organizzatori non commettano una frode, gli elettori non possono farlo. Questo garantisce anche l'anonimato.