![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 283 Pomógł: 1 Dołączył: 15.11.2004 Skąd: Mikołów Ostrzeżenie: (0%) ![]() ![]() |
Hej!
Zrobiłem mechanizm do głosowania w ankietach. Przed wielokrotnym głosowaniem zabezpieczam się ciastkiem i adresem IP. U mnie na FF działa dobrze, na IE podobno też. Jeden z użytkowników napisał mi jednak, że w Operze można głosować wiele razy, jeśli po oddaniu głosu wciśnie się przycisk WSTECZ. Pisze, że to może wina innego silnika i że Cytat Jeśli chcesz zrobić sobie dowolną ilość głosów wystarczy przy pierwszym głosowaniu w przeglądarce kliknąć wstecz i możesz ponownie głosować. Licznik sumuje każdy raz jako kolejny głos. Jakie macie sprawdzone sposoby, by takie zabezpieczenie działało wszędzie i skutecznie?
Sprawdziłem to na kilku sondach, na LK dodałem 50 głosów(zweryfikuj sobie jak masz możliwość, kliknięcia co 0.5s). Wszystko odbyło się na Operze w wersji 10.54, na IE wszystko w porządku. Sprawdzałem ciasteczka, i z tego co widzę nawet jak wyczyściłem bufor ciasteczkowy, to rozpoznawał poprawnie sondaże. Po za tym w normalnych warunkach działa dobrze, tzn zagłosować można tylko raz. Chodzi tylko o sytuację wyboru za pierwszym razem, cofnięcia się do strony poprzedniej i głosowanie jest ponownie dostępne. Z punktu widzenia kodu w serwerze ta sama sesja nie powinna być zaliczania jako nowa. Prawdopodobnie problem jest w samej Operze, ma inny silnik niż IE, i prawdopodobnie symuluje cofnięcie realnie, czyli z zmianom kodu ciasteczka na poprzednie. W IE kod ciasteczka pozostaje ten sam, i jest modyfikowany tylko przez serwer. -------------------- Ściskam prawicę...
Jacek http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów! http://jezusimarlena.ovh.org/ YouTube - Egzorcyzmy Anneliese Michel |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no jeżeli problemem jest tylko luka w postaci przycisku wstecz, to możesz po pierwszym wysłaniu formularza ustawiać zmienną sesyjną np jakieś $_SESSION['sent'] = true;
i przy każdym wysłaniu sprawdzasz czy ta zmienna jest ustawiona, jeżeli tak to nie uznajesz głosu |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
Stwórz sobie w bazie tabele która będzie przechowywała adresy IP osób które już zagłosowały. Gdy użytkownik zagłosuje w ankiecie sprawdzasz czy jego IP jest w bazie. Jeśli nie ma to zatwierdzasz ankietę, jeśli nie to wyświetlasz stosowny komunikat o tym, że już dana osoba głosowała w ankiecie.
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Najskuteczniejszy sposób to głosowanie tylko dla zalogowanych bądź potwierdzanie głosu mailem (to ostatnie upierdliwe)
![]() |
|
|
![]() ![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 283 Pomógł: 1 Dołączył: 15.11.2004 Skąd: Mikołów Ostrzeżenie: (0%) ![]() ![]() |
Co do tego IP i właściwości sieci macie rację. Poza tym na neostradzie (o ile wiem) często zmienia się IP, więc jej userzy mogliby częściej głosować.
Co myślicie o takim zabezpieczeniu? - po zagłosowaniu ustawiam cookie, wpisuję też IP do bazy i ustawiam w sesji, że głos został oddany - gdy ktoś usunie cookie, to przy kolejnej odsłonie strony sprawdzam, czy jego IP jest w bazie lub w sesji jest info o zagłosowaniu; jeśli tak, to ponownie ustawiam cookie - gdy zmieni się IP usera, to sprawdzam, czy ma cookie lub info w sesji; gdy ma, wpisuję IP do bazy - gdy zniknie info sesji, sprawdzam istnienie cookie lub wpisu o IP w bazie; gdy jest, ustawiam info w sesji -------------------- Ściskam prawicę...
Jacek http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów! http://jezusimarlena.ovh.org/ YouTube - Egzorcyzmy Anneliese Michel |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@up:
A co jeśli ktoś się rozłączy (zmieni adres IP) oraz usunie cookie? Jedyne sensowne i skuteczne zabezpieczenie to ograniczenie głosowania tylko dla zalogowanych użytkowników. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 283 Pomógł: 1 Dołączył: 15.11.2004 Skąd: Mikołów Ostrzeżenie: (0%) ![]() ![]() |
Wykonanie tych 3 rzeczy na raz jest bardzo mało prawdopodobne, a jeśli już, to też zniechęcające do ingerowania w wyniki takim sposobem.
Ograniczenie głosowania tylko dla zalogowanych zmniejsza mocno ilość ankietowanych. Ten post edytował Blackhole 24.06.2010, 15:32:51 -------------------- Ściskam prawicę...
Jacek http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów! http://jezusimarlena.ovh.org/ YouTube - Egzorcyzmy Anneliese Michel |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Wykonanie tych 3 rzeczy na raz jest bardzo mało prawdopodobne Do pierwszego ataku (D)DoS, który będzie miał na celu zmanipulowanie wyników ankiety. Projektując cokolwiek, co wchodzi w interakcję z danymi od użytkownika ZAWSZE zakładamy NAJGORSZY możliwy przypadek. Cytat Ograniczenie głosowania tylko dla zalogowanych zmniejsza mocno ilość ankietowanych. Pozostaje więc zbieranie wszystkich głosów i późniejsza analiza statystyczna (odstępy czasowe, etc). -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:11 |