Esiste un modo affidabile per prevenire imbrogli in un concorso basato sul Web in cui gli utenti anonimi possono votare?

StackOverflow https://stackoverflow.com/questions/55835

  •  09-06-2019
  •  | 
  •  

Domanda

Sto lavorando a un concorso basato sul web che dovrebbe consentire agli utenti anonimi di votare, ma vogliamo impedire loro di votare più di una volta.I limiti basati sull'IP possono essere aggirati con proxy anonimi, gli utenti possono cancellare i cookie, ecc.È possibile utilizzare un'applicazione Silverlight, che avrebbe accesso allo spazio di archiviazione isolato, ma gli utenti possono comunque cancellarlo.

Non penso che sia possibile farlo senza che qualche burlone si voti con un bot o qualcosa del genere.Hai un'idea?

È stato utile?

Soluzione

La risposta breve è:NO.La risposta più lunga è:ma puoi renderlo arbitrariamente difficile.Cosa farei:

  • Per votare è necessario risolvere un captcha (per evitare il più possibile il voto automatizzato).Per essere ancora più efficace consiglierei di aver preparato più tipi di captcha semplici (come "scegli la foto con il gatto", "cos'è 2+2", "digita la parola", ecc) e di ruotarli entrambi ora del giorno e per IP, che dovrebbe rendere inefficaci i sistemi automatici (cioè se qualcuno che utilizza IP A crea un bot per risolvere il captcha, questo diventerà inutilizzabile il giorno dopo o se lo distribuisce su altri computer/usa proxy)
  • Quando si filtra per IP è necessario fare attenzione a considerare le situazioni in cui più host si trovano dietro un IP pubblico (AFAIK AOL proxy tutti i propri clienti attraverso alcuni IP, quindi tale limitazione vieterebbe di fatto gli utenti AOL).Inoltre, molti proxy inviano intestazioni che puntano all'IP originale (come X-Forwarded-For), quindi puoi dare un'occhiata anche a quello.
  • Infine, l'utilizzo di qualcosa come FSO (Flash Shared Objects - "cookie Flash") è abbastanza oscuro perché il 99,99% delle persone non lo sappia.Silverlight è ancora più oscuro.Per essere ancora più subdolo, potresti acquistare un altro dominio e impostare l'FSO da quel dominio (quindi, se l'utente sta cercando gli FSO impostati dal tuo dominio, non ne vedrà nessuno)

Nessuno di questi metodi è sicuro al 100%, ma si spera che combinati ti diano il livello di sicurezza di cui hai bisogno.Se vuoi portare tutto questo a un livello più alto, devi aggiungere qualche tipo di registrazione dell'utente (che può essere semplice come chiedere un indirizzo e-mail valido quando avviene la votazione e inviare un collegamento di conferma all'indirizzo fornito senza contare il voti per i quali non è stato fatto clic sul collegamento, quindi non è necessario che sia un vero e proprio "crea un account con nome utente / password / nome / cognome / ecc.").

Altri suggerimenti

No, non puoi, e ci vuole solo una persona e un forum disponibile modificare l'esito di una votazione online.

Devi realizzare i difetti intrinseci di un voto online e invece di tentare di aggirarli, cerca di usarli a tuo vantaggio.

-Adamo

Puoi certamente renderlo difficile.

Che ne dici di creare un profilo utente con elementi come indirizzo IP, agente utente del browser, nome della macchina e qualsiasi altra informazione tu possa ottenere.

Memorizza il profilo per ciascun utente, quindi se ricevi un profilo abbastanza simile a uno già presente nel database (dovrai modificarlo) puoi eliminare quel voto.

Immagino che probabilmente potresti creare un profilo migliore utilizzando Silverlight, anche se non sono sicuro a quali informazioni ti dia accesso.

Le soluzioni lato client sono disponibili per i motivi elencati: possono essere manipolate dall'utente.Le soluzioni lato server, come hai detto, possono essere ingannate e aggirate.

Se sei disposto ad accettare il fatto che non puoi essere sicuro al 100% di ottenere esattamente un voto a persona, allora ci sono alcune misure che puoi adottare per ridurre il rumore.

  • Utilizza un CAPTCHA nel modulo di invio del voto per rendere più difficile il voto di bot e script.
  • Limita a uno il numero di voti per indirizzo IP.
  • Considera l'idea di richiedere la registrazione per poter votare.(So ​​che questo vanifica parte della tua domanda originale, ma ti dà un maggiore grado di controllo sul voto.)

È un buon inizio.

la mia esperienza personale nello sviluppo e nel monitoraggio dei concorsi mi dice che no, non esiste un modo affidabile per evitare di imbrogliare se si lascia votare gli utenti anonimi (o si fa qualsiasi cosa che consenta loro di partecipare al concorso).

potresti giocare con IP, introdurre ritardi tra un'azione e la successiva, ma è davvero difficile:il modo migliore è introdurre un captcha o qualcosa di simile, se applicabile alla tua situazione particolare.

soprattutto, non consentire la partecipazione di utenti anonimi:lasciali "giocare" e accedi a una simulazione, ma il concorso richiede un login.

No, è il computer dell'utente e lui ha il controllo.Sfortunatamente l'unica soluzione è riportarlo, per così dire, nel tuo campo e richiedere l'autenticazione.

Tuttavia, un CAPTCHA aiuta a limitare i voti almeno agli utenti umani.

Naturalmente anche con l'autenticazione non si può imporre il voto singolo perché poi insegnano ai bot a registrarsi...

Sono d'accordo che la risposta breve è no... anche se guardi la mia risposta recente qui: Come identificare in modo anonimo un utente e archiviare tali informazioni puoi certamente ottenerlo con un margine di errore del 6%.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top