2012-11-24 18 views
9

Sono il fondatore di una delle principali, le cosiddette "toplist". Gli utenti possono inviare il loro sito web alla lista più alta e ottenere una posizione più alta ottenendo voti per la loro voce di lista superiore.Identificare un visitatore unico, il modo avanzato? (PHP/Java)

Il visitatore medio è giovane, principalmente tra 13-20 anni. Portano benefici, ma anche svantaggi. Negli ultimi 5 anni ho combattuto attivamente "imbroglioni" che usano i robot per ottenere voti. Questi robot utilizzavano proxy, diversi user-agent e riuscivano persino a risolvere più tipi di domande CAPTCHA (reCAPTCHA, SolveMedia e captcha personalizzati). L'uso di questi robot è diminuito drasticamente da quando ho introdotto un nuovo sistema che crea un layout casuale e carica 1 su 15 diversi sistemi CAPTCHA per ciascuna pagina caricata. Non sembra più essere un problema.

Le persone si sono ora spostate sulla truffa manuale. Stanno utilizzando plug-in del browser che modificano il loro indirizzo IP praticamente su ogni caricamento di pagina (ad esempio: https://addons.mozilla.org/en-us/firefox/addon/ipflood/). Non riesco davvero a trovare un modo per combatterlo, ma è un grosso problema. È difficile da credere, ma questi ragazzi risolvono anche manualmente 5000 domande captcha, che richiedono anni.

La mia domanda è: qualcuno può aiutarmi a pensare a un modo per risolvere questo problema? Ho usato l'impostazione cookie e sessione, ma hanno iniziato a notare e rimuoverli. Inserirò gli account utente e renderò più interessante votare attraverso un account, ma non voglio richiedere account. Dubito che ci sia, ma c'è ancora un modo per combattere il cheating (forse come una web-app Java che elude i proxy impostati dal browser e passa il vero IP alla pagina, se possibile?)? O dovrei semplicemente rinunciare e assumere persone per fare controlli quotidiani per vedere se è possibile che il sito ottenga così tanti voti?

+0

Dove c'è un testamento, c'è un modo. Fai accedere i tuoi elettori e memorizza li ip con cui accedono se cambia 5k volte al giorno che conosci anche i token CSRF per ogni voto, in sessione e in un cookie, rileva i bot controllando se anche scaricano asset come immagini, css. –

+0

Mi sono appena reso conto che ho dimenticato di dire che votare è possibile solo una volta ogni 24 ore. Non voglio richiedere il login utente, dubito che ci sia un milione di persone disposte a fare un account, la maggior parte smetterebbe di usare il mio sito web di sicuro. Sto rendendo più interessante l'utilizzo di un account, come la rimozione dei tempi di attesa e il captcha. Sembrano piacere. Limitare a 1 voto per 24 ore è facile perché posso controllare i nomi utente invece degli IP. – Jason

+1

Domanda davvero interessante. –

risposta

5

Si consiglia di implementare una sorta di meccanismo di affidabilità IP, perché gli indirizzi IP utilizzati dai proxy aperti vengono spesso utilizzati per cose illegali.
Così tanti di questi indirizzi vengono catturati da honeypot e sono inseriti nella lista nera da diverse organizzazioni. Dai un'occhiata a honeypotproject per esempio:
https://www.projecthoneypot.org/
È un enorme database e può essere facilmente implementato in PHP utilizzando le funzioni di ricerca DNS. anche
http://www.stopforumspam.com/
è piuttosto buono e fornisce un'interfaccia REST se la ricordo correttamente.
In aggiunta a ciò ci sono centinaia di DNSBL che blacklist vari tipi di attività, hanno uno sguardo ad alcuni proxy-DNSBL:
http://spamlinks.net/filter-dnsbl-lists.htm o http://dnsbl.tornevall.org/ o http://www.sorbs.net/

Ultimo ma non meno importante è possibile utilizzare metodi PHP comuni per delega il blocco (il più semplice da verificare per l'intestazione HTTP-X-Forwarded, non tutti i proxy lo forniscono però)
Continua a leggere qui: https://meta.wikimedia.org/wiki/Proxy_blocking o qui: Detect clients with Proxy Servers via PHP

+0

Questi link sono davvero utili, grazie!Ho appena controllato alcuni indirizzi IP che hanno votato per voci sospette e ho scoperto che pochi sono noti come proxy nel progetto honeypot. Vado a esaminare quei database, mi sembra un metodo eccellente. – Jason

Problemi correlati