2009-06-10 11 views
18

Vorrei implementare un sistema di votazione sul mio sito, senza costringerlo a creare un account. Alla fine voterebbero su/giù un contenuto che ha un ID univoco.Implementazione di un sistema di votazione senza registrazione

  • So che potrei memorizzare le voci in una tabella con IP/ID, ma cosa succede se ci sono più utenti provenienti dallo stesso IP?
  • C'è un modo per identificare in modo univoco i visitatori senza che sia legato al loro ip esterno?
  • Se è stato creato un GUID, memorizzarlo in un cookie su quella macchina, potrebbe essere recuperato in un secondo momento sullo stesso computer con lo stesso IP? Un IP diverso?

Qualsiasi pensiero su queste domande, o qualsiasi intuizione per un approccio migliore sarebbe molto apprezzato.

+0

Che cosa deve impedire a qualcuno di votare su/giù un post 50 o 100 volte? – matpie

+4

Credo che sia quello che l'OP ha voluto che la domanda fosse: come impedire alla stessa persona di votare più volte su/giù. – Nate

+0

Sì, l'idea alla base della domanda è prevenire l'abuso, ma progettare un sistema che non richiede la registrazione – barfoon

risposta

21

Sì, è possibile utilizzare un cookie e impostare la scadenza molto lontano nel futuro; tuttavia, non c'è nulla che impedisca a nessuno di svuotare la propria cache e di votare di nuovo.

La soluzione migliore è utilizzare il cookie e non consentire voti dello stesso IP entro 15 minuti l'uno dall'altro ... senza registrazione è il meglio che si possa fare.

+0

Penso che implementerò qualcosa di simile - o un numero massimo di voti su pezzi unici di contenuto al giorno. Grazie per il tuo input, – barfoon

+3

ci sono molti utenti provenienti dallo stesso IP (ad esempio AOL) e la maggior parte delle persone usa ancora IE, quindi l'archiviazione delle informazioni relative al browser non sarà di aiuto. C'è anche un numero di persone che non consente il salvataggio dei cookie (non una grande quantità). Sembra che il voto non sia così rigido, quindi suggerirei di creare un valore casuale che memorizzi nel cookie e nel DB in modo univoco (nella misura in cui puoi) identificare qualcuno – meade

+0

Questo semplicemente non è vero; ogni cliente AOL avrà il proprio indirizzo IP, fino a quando non si disconterà e verrà assegnato un nuovo indirizzo IP. È improbabile che un utente possa ottenere un indirizzo IP AOL, votare su questo sito Web, disconnettersi e fare in modo che un altro utente si colleghi a AOL per ottenere lo stesso indirizzo IP e provare a votare su questo sito. - come ho detto nel mio post senza registrazione, è il meglio che puoi fare. Non è infallibile ma previene gli abusi estremi. – Nate

3

In linea di principio è impossibile per te, utilizzando un cookie, distinguere tra un visitatore che non ha mai visitato e un visitatore che ha visitato ma eliminato il cookie. Di conseguenza, qualsiasi soluzione basata su cookie sarà vulnerabile a frodi di voto banali.

Considerate abbracciare questa realtà nello spirito di J Henry Lowengard, che, quando l'installazione del top 100 site on WFMU indietro a metà degli anni 1990, ha fornito un pulsante sul "tuo voto è stato conteggiato" pagina etichetta "Torna indietro e votare Some More! "

Infatti, go there now e votare per (o contro) StackOverflow!

4

Si potrebbe consentire loro di accedere utilizzando OpenId, questo consentirebbe loro di utilizzare un account esistente per votare e non avrebbero bisogno di creare un nuovo account.

Google e Yahoo e altri hanno servizi che consentono di autenticare gli utenti.

Se non si autentica in qualche modo gli utenti, il sistema di voto mi consente di abusare.

+5

Sarà aperto ad abuso, punto. Il numero di account OpenId che si possono avere non è limitato. In realtà è abbastanza semplice diventare un fornitore OpenId e generare un numero infinito di account OpenId con pochissimo sforzo. –

+1

Non è necessario consentire account da tutti i provider OpenID. –

8

È possibile identificare gli utenti in base a più di un semplice IP. Ad esempio potresti includere l'IP + l'intera intestazione della richiesta (come Browser, Numeri di versione, Funzionalità) e cancellarlo. Ciò identificherà più o meno in modo univoco il tuo utente (non al 100%, sfortunatamente).

+3

Se qualcuno stesse cercando un modo per giocare al sistema, probabilmente proverebbe a cambiare abbastanza velocemente la stringa del browser. – Hardwareguy

+1

Il problema con l'hashing di tutto sta perdendo dati. È ragionevole dire che tutti questi dati sono probabilmente unici, ma in realtà offri all'utente malintenzionato un vantaggio dal momento che, come indicato da Hardwareguy, possono modificare un solo elemento e apparire come un utente completamente diverso. Invece, penso che sia meglio rintracciare diversi oggetti teoricamente unici, e se/nessuno/di loro è già apparso, negare. – dimo414

+0

La maggior parte dello spoofing che ho visto era solo su un'intestazione: User-Agent. La maggior parte dei browser invia anche altre intestazioni: Accept, Accept-Language, ecc. Se si visualizzano più richieste dallo stesso IP con un'intestazione che cambia e altre rimangono uguali (o tutte cambiano contemporaneamente, probabilmente a valori strani come 'Accept-Language : x-piglatin'), probabilmente hai uno spoofer. – Piskvor

3

L'agente utente IP + è molto più esclusivo di IP; non sono sicuro se sia adeguato ai tuoi scopi. Se invii loro un cookie, questo verrà restituito da quel computer (se sta utilizzando lo stesso browser) a condizione che il cookie rimanga intorno, indipendentemente dall'IP, ma si noti che l'utente può sbarazzarsi del cookie ogni volta che lo desidera .

Se siete preoccupati per l'utilizzo di questo sistema per prevenire la frode elettorale, non credo che non sarete in grado di andare in giro facendogli avere un account.

0

Un'altra opzione potrebbe essere quella di utilizzare la sessione. Ti permetterebbe di memorizzare l'ID della sessione insieme all'IP. Ciò consentirebbe di ottenere più IP ma da sessioni diverse.L'unico difetto sarebbe il possibile cambio di browser. Aggiungere un cookie per renderlo un trio potrebbe aiutare a eliminare le inondazioni.

Ho fatto questo in passato con solo l'indirizzo IP, che sembra funzionare su piccola scala.

1

Sto pensando lo stesso problema adesso. i miei possibili approcci saranno i seguenti:

  • (A) si può accettare voti da quelle persone che erano nel vostro sito (utilizzando sessioni) per almeno 15 minuti (si può richiedere molto tempo approssimativo per un utente di leggere un articolo in un blog/sito). quando votano, il timer si resetterà per il prossimo voto. in questo modo, non serve più cancellare i cookie per gli utenti.

  • (B) puoi accettare voti da persone non registrate e prendere il loro indirizzo email e inviare loro un link di verifica al loro voto. quando fanno clic sul link di verifica nella loro casella di posta elettronica, puoi effettivamente contare il voto. è come votare per indirizzo email.

  • (C) combinazione di (A) e (B). in questo modo si può essere sicuri che verranno inviati link di verifica solo ogni 15 minuti per un singolo utente che non sarà un sacco :)

0

Si potrebbe provare Evercookie o simili soluzioni.

1

So che questo è vecchio, ma appena arrivato qui e aveva un'idea ..

Che dire qualcosa come https://panopticlick.eff.org? Ancora un'altra cosa si potrebbe buttare in ..

(Se mai va offline: Si tratta di un'impronta digitale cumulativo fatto della solita roba più + Browser Plugin dettagli + Time Zone + Dimensioni dello schermo e Profondità colore + Font di sistema + supercookies )

Problemi correlati