2010-10-19 9 views
13

Sto per scrivere un metodo di voto per il mio sito. Voglio un metodo per impedire alle persone di votare per la stessa cosa due volte. Finora i miei pensieri sono stati:Il miglior metodo per prevenire i giochi con voto anonimo

  • cadere un biscotto, una volta il voto è completa (suscettibile di più il gioco del browser)
  • Log indirizzo IP per ogni voto (questo fallirà nel proxy/ambienti aziendali)
  • Forza accessi

Questo sito non è account in base quanto tale, sebbene aggrega dati di Twitter, quindi non c'è possibilità di usare Twitter OAuth come mezzo di identificazione.

Quali sistemi esistenti esistono e come fanno questo?

+0

possibile duplicato di [Limitare 1 voto per indirizzo IP?] (Http://stackoverflow.com/questions/1246705/limit-1-vote-per-ip-address) – bzlm

risposta

11

La cosa migliore sarebbe non consentire il voto anonimo. Se l'utente è obbligato ad accedere, è possibile salvare l'ID utente con ciascun voto e accertarsi che voti una sola volta.

L'approccio dei cookie è molto delicato poiché i cookie possono essere eliminati facilmente. L'approccio con l'indirizzo IP ha la carenza che tu stesso descrivi.

+0

Sarebbe possibile per me utilizzare i loro accesso twitter come login al mio sito? Quindi, fino a quando sono stati registrati su twitter, potrebbero accedere al mio sito? – Chris

+0

@ Chris, si. Il modo più semplice sarebbe probabilmente quello di utilizzare un provider SSO di terze parti come http://www.janrain.com/ –

+0

Grazie, penso che funzionerà abbastanza bene! – Chris

3

Un passo verso un sistema di utente di autenticazione, ma non tutte le complicazioni:

ottenere l'utente di inserire il proprio indirizzo e-mail e confermare il loro voto, non sarebbe sradicare il gioco, ma si dovrebbe rendere più difficile per i giocatori di registrarsi un altro indirizzo e-mail e poi votare ecc.

Potrebbe valere il passaggio in più.

Facci sapere per cosa stai andando.

+0

Questo non funzionerebbe molto bene. Ho il mio dominio Posso avere qualsiasi email che voglio al suo interno. Un altro esempio: se la tua email è [email protected], puoi usare "[email protected]" [email protected], ecc. (Il testo dopo il + viene ignorato e viene consegnato al tuo account). Puoi anche includere punti nel tuo nome utente. (Funziona solo sugli indirizzi Gmail!) –

1

approccio diverso, proprio per offrire un'alternativa:

Supponendo che la maggior parte delle persone sanno come comportarsi o semplicemente non può essere disturbato a comportarsi male, solo retroattivamente pulire i voti. Ciò manterrebbe anche il voto discreto per gli elettori.

Così, i cookies, log ogni voto e poi (o su un intervallo di tempo?), Passare attraverso i risultati e rimuovere i duplicati in base ai valori dei cookie, combinazioni IP/UserAgent ecc

Mi piacerebbe pensare che non bloccare attivamente più voti dalla stessa persona riduce al minimo l'utilizzo di metodi di elusione altamente tecnici e i risultati sono facili da pulire.

Come lato negativo, non è possibile visualizzare in tempo reale i conteggi dei voti effettivi sull'interfaccia utente, altrimenti le sopracciglia si alzeranno quando mancherà il mazzo di voti.

3

Se si desidera utilizzare i cookie, utilizzare uno evercookie.

evercookie è un'API JavaScript disponibili che produce cookie estremamente persistenti in un browser. Il suo obiettivo è identificare un client anche dopo aver rimosso i cookie standard , i cookie Flash (Local Shared Objects o LSO) e gli altri .

evercookie realizza questo memorizzando i dati dei cookie in diversi tipi di meccanismi di archiviazione disponibili su il browser locale. Inoltre, se evercookie ha rilevato che l'utente ha rimosso uno qualsiasi dei tipi di cookie in questione, lo li ricrea utilizzando ciascun meccanismo disponibile.

I cheat multi-browser non saranno interessati, ovviamente.

+1

Attenzione: se visiti il ​​sito evercookie, tenterà di creare un evercookie sul tuo browser. I commenti su un recente post di Bruce Schneier contengono un'interessante discussione sul sito: http://www.schneier.com/blog/archives/2010/09/evercookies.html – APC

+0

@APC Perché garantisce un avviso? Penso che la maggior parte dei siti, quando visitati, tentano di inserire un cookie nel mio browser. :) – bzlm

+0

Il punto su evercookies è che il software proverà a mettere uno dei suoi uber-cookie su di te anche se hai impostato il tuo browser per non accettare i cookie di terze parti. Certo, alle persone imost non importa davvero. Ma alcune persone diventano piuttosto aerate sull'argomento. – APC

1

Anche se probabilmente non lo farei io stesso, ma guarda questi biscotti, sono abbastanza difficile sbarazzarsi di:

http://samy.pl/evercookie/

Un modo diverso che ho dovuto affrontare questo problema e lotta la frode elettorale, doveva richiedere un indirizzo e-mail, quindi una persona poteva ancora votare, ma i voti non venivano conteggiati fino a quando non facevano clic su un link nell'email. Questo è stato più facile rispetto alla registrazione completa, ma è stato comunque molto efficace nell'eliminare la maggior parte dei voti fraudolenti.

+0

Oops, ho visto che qualcuno ha già suggerito evercookie – Andre

+0

Qualcuno ha suggerito anche l'e-mail. :) http://stackoverflow.com/questions/3968328/best-method-to-prevent-gaming-with-anonymous-voting/3968430#3968430 – bzlm

1

Se non vuoi che gli utenti forzino l'accesso, considera questo evercookie, ma forza lo script java per abilitare la registrazione!

Questo evercookie è banale da bloccare perché è basato su script java. L'autore dell'attacco non avrebbe probabilmente utilizzato il browser, con il ricciolo che poteva generare troppe richieste. Hovewer tali strumenti hanno solitamente un supporto javascript di solito scarso.

Mail è ancora più facile da imbrogliare. Quando si esegue il proprio server, è possibile accettare tutti gli indirizzi e-mail, in modo da avere un numero praticamente illimitato di indirizzi da utilizzare.

3

Di quale tipo di giochi vuoi proteggerti? Qualcuno crea un paio di robot e ti bombarda con migliaia (milioni) di richieste? O qualcuno senza cose migliori da fare e provare a fare 10-20 voti?

Sì, lo so: entrambi - ma quale è la vostra principale preoccupazione qui?

L'utilizzo di CAPTCHA insieme alla votazione basata su e-mail (inviare un collegamento all'e-mail per convalidare il voto) potrebbe funzionare bene con i robot. Ma un umano può sfruttare più o meno facilmente il sistema di posta elettronica (come commento in una risposta e postare di nuovo qui)

Possiedo un dominio personalizzato e posso avere qualsiasi email che voglio al suo interno.

Un altro esempio: se la tua e-mail è myuser * @ gmail.com *, è possibile utilizzare "[email protected]" [email protected], ecc (il segno più e il testo dopo viene ignorato e viene consegnato al tuo account). Puoi anche includere i punti nel tuo nome utente ([email protected]). (Questo solo opere su indirizzi gmail!)

per la protezione contro gli esseri umani, non so mai-cookie ma potrebbe essere una buona scelta. L'utilizzo di OAuth integrato con Twitter, FB e altre reti potrebbe funzionare anche bene.

Inoltre, ricorda: richiedere email a qualcuno per votare spaventerà molte persone! Otterrai molti meno voti!

Un'altra opzione è quella di limitare il numero di voti il ​​sistema accetta da ogni ip al minuto (o ora o qualsiasi altra cosa). Per proteggersi dagli attacchi distribuiti, limita il numero totale di voti accettati dal tuo sistema entro un periodo di tempo prestabilito.

+0

oops, ho appena notato che questo è un vecchio post! –