2011-11-24 15 views
5

Kontekst

Zajmuję się tworzeniem strony internetowej z ankietami, w której każdy może zagłosować raz. Oczywiście muszę zapobiec wielokrotnym rejestracjom, aby ankieta pozostała istotna. Zmuszam każdego użytkownika do logowania się za pomocą konta Google, Facebook lub Twitter. Ale mogą uwierzytelnić się 3 razy, jeśli mają konto na każdej z nich lub uwierzytelniają się na wielu kontach na tej samej platformie (mam 3 konta w Google). Więc pomyślałem, aby przechowywać ich adres IP, ale nadal mogą korzystać z proxy. Mogę zatrzymać agenta użytkownika HTTP pod numerem PHP's get_browser(), mimo że nadal mogą zmieniać przeglądarki. Mogę wyodrębnić system operacyjny za pomocą wyrażenia regularnego, aby zmienić system operacyjny jest mniej łatwy niż przeglądarki. Istnieje również geolokalizacja, na przykład z the Google Map API.Zapobiegaj wielokrotnym rejestracjom na stronie ankiety

Pytania

  • Jak zapobiegać wielu rejestracje? Jakiego rodzaju test można wykonać?
  • Jak osadzić te testy? Wykonać w jakiej kolejności?
  • Czy wdrożyłeś już tego rodzaju rozwiązanie?
+0

podobne: http://stackoverflow.com/questions/8099388/prevent-multiple-entries-using-php – Tim

+4

Pułapki: Adres IP może ograniczyć się do posiadania domu tylko jedna rejestracja – Tim

+0

@Tim: Dobry punkt. –

Odpowiedz

3

Możesz zweryfikować użytkownika za pomocą telefonu komórkowego, wysyłając do niego SMS-a z kodem. To ograniczy liczbę głosów do liczby numerów telefonów komórkowych posiadanych przez użytkownika.

+0

Interesujące. Znasz dobry artykuł na ten temat? –

+0

Nie znam jednego. Ale pomysł jest prosty: znajdź bramę SMS (jest ich wiele w sieci), zapytaj użytkownika o numer telefonu, wyślij SMS-a z kodem na ten numer, poproś użytkownika o wpisanie kodu. – werewindle

+0

Problem polega na tym, że proces jest trochę długi. Użytkownik przychodzi na stronę tylko po to, aby głosować, i jest zobowiązany do zalogowania się na Facebooku i wsp., A następnie podać jej numer telefonu, następnie czekać na SMS-y, a następnie wpisać kod, aby w końcu móc głosować. Ciekawi mnie procentowa utrata odwiedzających tą metodą. –

4

Jedynym sposobem uzyskania absolutnej pewności jest użycie czegoś, co jednoznacznie identyfikuje osobę, taką jak numer seryjny (numer ubezpieczenia społecznego) lub identyfikator sprzętowy (klucz RSA). Następną najlepszą rzeczą jest wymaganie karty kredytowej, ponieważ zwykle identyfikuje imię i nazwisko. Wszystkie inne próby można łatwo zepsuć (np. Uwierzytelnianie dwufazowe z numerem telefonu, geolokalizacją itp.). Nagłówki wysyłane, gdy przeglądarka może być łatwo sfałszowana (geolokalizacja, adres IP, agent użytkownika to wszystkie nagłówki), a jak już wspomniano, bardzo łatwo jest utworzyć wiele kont Google/Twitter.

+1

Kupowanie wielu identyfikatorów sprzętowych również jest łatwe, a sprawdzanie poprawności numerów SSN jest trudne. – CodesInChaos

+0

Tak, chyba że wydasz identyfikatory sprzętowe i prześledzisz je każdemu użytkownikowi.Zgadzam się, że zazwyczaj nie jest to podejście, które chcesz podjąć. –

1

Wymienione testy mogą pomóc w zapobieganiu rejestracji wielu użytkowników, ale określony użytkownik będzie mógł ominąć te środki, jeśli naprawdę tego chcą.

Mogą tworzyć wiele kont za pomocą Google, FB lub Twitter, łatwo fałszować swojego klienta użytkownika za pomocą wtyczek do przeglądarek, jak powiedziałeś, ukryć się za dużymi ilościami serwerów proxy, które również pokonują geolokalizację.

Jedną z rzeczy, które możesz zrobić, to dodać wykrywanie proxy i próbować uniemożliwić rejestrację/głosowanie, jeśli uważasz, że są za proxy.

1

Co należy zrobić, jeśli wymaga się podania prawidłowego adresu e-mail z domen (lub domen TLD, takich jak .gov?), Które przyznają tylko jeden adres e-mail na osobę fizyczną?

Przedstawienie tutaj sugestii może być niewykonalne, jeśli musisz dosłownie pozwolić komukolwiek głosować.

1

Najprawdopodobniej będziesz musiał pójść na kompromis. Zapewnienie w 100% pewności, że Twoi użytkownicy są różnymi osobami, będzie prawie niemożliwe. Jednym rozsądnym podejściem jest użycie usługi takiej jak Twilio i wymaganie od użytkowników podania unikalnego numeru telefonu, który witryna może potwierdzić zwykłą rozmową telefoniczną.

Prawdopodobnie będziesz również chciał, aby niewygodne używać wielu kont. W twoim przypadku możesz użyć captcha w procesie głosowania, aby głosów nie można było wprowadzić za pomocą automatycznego systemu. W ten sposób, nawet jeśli ktoś ma 10 lub 50 numerów telefonów, musi podjąć znaczny wysiłek, aby znacząco zmienić wyniki.

1

Po pierwsze musisz jakoś jednoznacznie zidentyfikować użytkownika. Niektóre rzeczy już wymienić:

  1. Adresy e-mail
  2. adresów IP
  3. Użytkownik HTTP

Wszystkie powyższe są łatwo sfałszować:

  1. można utworzyć kilka kont pocztowych
  2. Serwery proxy. Ktoś postanowił spróbować dowiedzieć się, czy dana osoba jest za serwerem proxy, ale nie znajdziesz użytkowników z dostępnymi elitarnymi serwerami proxy. Innym problemem jest to, że może istnieć kilku użytkowników współużytkujących jeden adres IP.
  3. klienckie informacje mogą zostać zmienione

Coś który jednoznacznie identyfikuje użytkownika jest SSN. Problem polega na tym, że można go nieco sfałszować, ponieważ w sieci jest kilka generatorów.

Problem polega na tym, że naprawdę trudno jest zweryfikować, czy dana osoba rzeczywiście jest tą osobą, za którą się podaje. Rozwiązaniem byłoby uczynienie tak trudnym, jak to tylko możliwe, aby użytkownik mógł zdobyć kilka głosów (jeśli nie ma kluczowego znaczenia dla jednego głosu).

Można to rozwiązać, np. Za pomocą SMS-a. Jest to trochę trudne/niewygodne, aby użytkownik mógł uzyskać dostęp do kilku numerów telefonów.

1

Zacznę od zezwolenia na rejestrację tylko jednej wiadomości e-mail na stronie internetowej.

Wtedy powinieneś popatrzeć na zezwolenie na głosy raz z każdego IP. To może nie być opłacalne, ponieważ oczywiście zablokuje potencjalnych wyborców za routerami.

Można sprawdzić agentów użytkownika każdego głosującego, aby spróbować znaleźć rozbieżności.

Wszystko, co jest unikalne dla użytkownika, powinno być w zasadzie sprawdzone, chociaż może nie być możliwe pełne sprawdzenie strony serwera użytkownika.

Jak już zasugerowałeś, używając numerów telefonów, jest to również inny sposób na zmniejszenie liczby spamujących wyborców.

-1

Wymaganie od użytkowników telekonferencji do konta wydaje się dość powszechnym sposobem zapobiegania rejestracjom masowym. Istnieje kilka firm świadczących te usługi.

Powiązane problemy