2010-08-03 9 views
6

W mojej witrynie prowadzimy system konkursowy, a użytkownicy głosują na treści innych użytkowników. Niedawno złapaliśmy kogoś, kto tworzy wiele kont, aby głosować wiele razy (kolejne numery identyfikacyjne i głosy w ciągu kilku minut). Chcielibyśmy, aby to się ponownie nie powtórzyło. Sądząc po tym, jak Times obsłużył ich ankietę "Najbardziej wpływowa osoba wieku", nawet najwięksi faceci popełniają błąd.Jak zapobiec największej liczbie oszustów w ankietach?

Obecnie rejestrujemy identyfikator użytkownika, datę głosowania i adresy IPv4 (przez $ _SERVER ['REMOTE_ADDR']).

Co mogę zrobić, aby uniemożliwić lub utrudnić komuś głosowanie w nieuczciwy sposób?

Odpowiedz

6

Wymagaj reputacji użytkownika. Jeśli kojarzysz prawo do głosowania z użytkownikiem, który musi mieć określoną reputację (np. Przez uczestnictwo w Twojej społeczności przez określony czas i dostarczanie znaczących treści), coraz trudniej jest komuś zautomatyzować proces tworzenia wielu tożsamości.

W końcu jest to równowaga między wystarczającym uwierzytelnieniem, łatwością dostępu i wartością wyniku (dla ciebie i użytkownika) - i jak prezentujesz wyniki.

+1

Głosowałem za tobą, ponieważ jest to dobry system, ale zdolność do głosowania na kogoś może również spowodować, że wyspiarska społeczność bota stanie się de facto "up-voters", a tym samym pozwolą sobie na przegłosowanie własny rep. – Organiccat

+0

Dzięki. Głosowałem za twoją uwagą, aby udowodnić twój punkt widzenia. ;) Ale ważną częścią jest również znalezienie bardziej obiektywnych wartości do wyrażania reputacji niż opinie innych użytkowników. Przykład może być miarą jakości dostarczanej treści. – relet

+0

Przedstawiciel w mojej witrynie jest generowany inaczej. Boty byłyby możliwe, ale trudne. Reputacja jest generowana przez interakcję z systemem (np. Dodawanie znajomych, granie w gry itp.). To może działać całkiem dobrze. – Malfist

0

Niestety bardzo trudno jest zapobiec nieuczciwemu głosowaniu, gdy istnieje wola, istnieje sposób. Chodzi jednak o to, aby oszukiwać system tak niewygodny jak to tylko możliwe.

Czy Twoje konta wymagają unikalnego adresu e-mail z weryfikacją przed użyciem konta?

Jak często użytkownicy mogą głosować? Jeśli jest to tylko raz lub raz dziennie, możesz wysłać wiadomość e-mail, aby zweryfikować głosowanie, jednak może to być uciążliwe dla prawowitych użytkowników.

Nie jestem pewien co do skali strony internetowej, jednak kiedy zaczynasz mówić o bardzo dużej stronie internetowej, takiej jak ankieta Czasowa, trudno jest ocenić, czy kolejne głosy są fałszywe, patrząc na adres IP. Koledże i biura często mogą mieć setki osób na tym samym adresie IP. Trudno powiedzieć, czy to jedna osoba za głosowaniem, czy też jedna osoba idzie dookoła wszystkich swoich znajomych na dormitorium, mówiąc im, że mają głosować (może wyjaśnić nową rejestrację/głosy z tego samego adresu IP dookoła w tym samym czasie).

Naprawdę nie ma odpowiedzi na to pytanie, po prostu monitoruj dzienniki i usuwaj głosy, które nie wyglądają na zgodne z prawem.

0

Tak jak już to robisz, śledź adresy IP wraz z czasem głosowania i nie dopuszczaj wielu głosów z tego samego adresu IP w tym samym przedziale czasowym. Ma to wpływ tylko na kilku studentów najwyżej.

Innym prostszym sposobem wykonania tego przy bezpiecznym głosowaniu jest wymuszenie rejestracji i potwierdzenia adresu e-mail. Niektóre witryny z botami/spamami nadal mogą obejść ten problem przez posiadanie własnej domeny, ale możesz wtedy zablokować rejestrację domen i głosowanie z tej witryny. Jest to "najbardziej denerwujące", jednak najbardziej czasochłonne, co prowadzi do najmniejszego prawdopodobieństwa, w połączeniu z adresami IP, do doprowadzenia do ciężkiego oszustwa.

Należy pamiętać, że nie można zapobiec oszustwom w systemie, można je jednak złagodzić.

1

Używanie adresu IPv4 z podpisem przeglądarki ($ _SERVER ['HTTP_USER_AGENT']) hash.

Jeśli głosowanie pochodzi od innego użytkownika, ale z tego samego adresu IP, z tą samą przeglądarką, w zamkniętym oknie czasowym jest to prawdopodobnie oszustwo.

Jeśli czas jest zbyt blisko, co prowadzi do automatycznego procesu, captcha go rozwiąże (ale nikt nie lubi captcha w ankietach).

+0

Zgadzam się z każdym tutaj. Nie ma sposobu, aby naprawdę zapobiec oszustwom, ale istnieją sposoby na złagodzenie. Inne sugestie dotyczące wymuszania ważnego konta użytkownika na podstawie poprawnego adresu e-mail (z krokiem potwierdzenia). Śledź śledzenie, korzystaj z IPv4 i skrótu przeglądarki w określonym czasie. Ograniczanie głosów użytkowników do jednej tylko na jedną ankietę ... Wszystko, co dodaje trochę komplikacji, pomaga zapobiegać oszustwom. – Dave

+0

Myślałem o tym również, ale większość dużych organizacji na tym samym IP również ogólnie mają te same wersje przeglądarki z mojego doświadczenia. Jeśli mają różne przeglądarki na różnych komputerach, prawdopodobnie będą w stanie zainstalować inne przeglądarki, które sprawią, że agent użytkownika sprawdzi, czy może po prostu otworzyć inną przeglądarkę na tym komputerze. – Alex

+0

Nie tylko duże organizacje, ale także uczelnie lub publiczne domy sieciowe. To część wyzwania. Na przykład w IBM jest prawie niemożliwe pobranie czegoś z rapidshare za darmo z tego właśnie powodu. Sugestia zalogowania się User-Agent najprawdopodobniej uniemożliwi automatyzację (na przykład przy użyciu JMeter ze źródłem danych kont i pętli 100x, ponieważ JMeter domyślnie nie wysyła żadnych nagłówków). Aby lepiej to zrozumieć, sugeruję artykuły Chrisa Shifletta na temat bezpieczeństwa PHP. – Dave

0

Chciałbym użyć kombinacji ograniczania liczby adresów IP i plików cookie. Tak, ciasteczka można usunąć, ale to powstrzyma złośliwy typ osoby, która również jest idiotą.

Ograniczenie adresu IP sprawdzi, czy ktoś z tego adresu IP głosował ostatnio (powiedz 10 minut, co uważasz za sprawiedliwe w zależności od danych demograficznych lub liczby osób głosujących z dużej organizacji na tym samym adresie IP) i zatrzymaj głosowanie liczone.

Połączyć te 2 przy użyciu identyfikatora użytkownika już jest i to tyle, ile można zrobić realistycznie.

Powiązane problemy