Non c'è assolutamente nulla nei metodi di autenticazione OpenID / OAuth che garantisce che l'accesso individuale attraverso di loro sia davvero un utente unico. OpenID fornisce un po 'più di dati sotto forma di certificato (nome utente, indirizzo email e notaio ) dell'autenticazione chiave di valet di OAuth, ma questo da solo non è sufficiente per evitare di votare frodi . Usare la parola frode in questo senso è un po 'severa secondo me, forse abuso è più adatto? Indipendentemente da ciò, vediamo quali sono le altre informazioni che potresti utilizzare nella tua applicazione web e cosa significa per il tuo sistema di votazione:
-
Indirizzo IP : non adatto poiché la maggior parte degli utenti ottiene l'IP assegnato da un server DHCP ed è dinamico (può essere assegnato a un altro utente in un secondo momento, oppure lo stesso utente può richiederne uno nuovo), diversi utenti potrebbero accedere al tuo sito web tramite lo stesso IP (organizzazioni e altri utenti che utilizzano server proxy, utenti mobili IPv6 che effettuano il tunneling attraverso un broker IPv4 e così via) oppure lo stesso individuo potrebbe utilizzare altri mezzi per accedere al tuo sito web con un IP diverso (rete TOR, VPN, ...)
-
ID sessione : consiste in un cookie di sessione (o qualche forma di un valore di query di richiesta persistente di sessione nelle sessioni senza cookie), comunemente anche stringa utente-agente (stringa di identificazione del browser) e IP già coperto. Nessuno di questi (da solo o nel suo insieme) garantisce che un utente unico sia registrato poiché può semplicemente passare a browser diversi, cancellare la sessione dell'utente eliminando i cookie o persino modificare la firma del browser. Tutto ciò può invalidare la sessione utente e una richiesta per una nuova sarebbe fatta.
-
Stringa referral : non adatta a se stessa in quanto può essere facilmente falsificata o semplicemente riutilizzata più volte.
Questo ti lascia in entrambi:
- Affidandosi a Facebook e Twitter per rilevare autonomamente più account per utente,
- Richiesta di un'autenticazione utente aggiuntiva che proverebbe a rilevare tale abuso (potrebbe essere impossibile fare meglio di ciò che è già in atto con Facebook e Twitter),
- Passa al voto con una scheda elettorale (invito solo per votazioni una tantum) o
- Tieni conto di possibili abusi di voto durante la presentazione dei risultati (come le medie ponderate ).
Tutte queste ultime tre opzioni sono piuttosto difficili da implementare e potrebbero non rientrare nel budget del tuo progetto, che è - alla fine della giornata - il fattore più decisivo su quale di queste opzioni potrebbe o dovrebbe essere implementata.
In una nota a margine, volevo darti un buon esempio per la media ponderata, ma il problema è che tutti i sistemi che si preoccupano della validità di questi metodi intenzionalmente non pubblicano i loro meccanismi interni, per prevenire ulteriori abusi da parte di aggirare il sistema in atto. Uno dei siti Web che utilizza tali meccanismi di voto ed è noto per mettere un sacco di impegno in esso è IMDB (tu essere il giudice su quanto sia efficace, mi riserverò i miei commenti), e ce ne sono molti altri con implementazioni del tutto diverse. Persino StackExchange ha una sorta di prevenzione del voto seriale, ma i dettagli a riguardo sono anche piuttosto scarsi.