Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] otwiernie strony tylko w 1 przegladarce, na 1 komputerze
Woijtek338
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Witam!
Posiadam platformę nauczania. Ludzie logują się i oglądają slajdy - kazdy slajd ma kilka sekund po czym jest zaliczany.
Luka polega na tym , że z jednego komputera można otworzyć np. 3 przeglądarki i na raz przesuwać slajdy żeby było szybciej.
Jak się przed tym zabezpieczyć ?
Go to the top of the page
+Quote Post
Magic WWW
post
Post #2





Grupa: Zarejestrowani
Postów: 123
Pomógł: 32
Dołączył: 9.09.2010
Skąd: Brzeg

Ostrzeżenie: (0%)
-----


Hmm jak bym może kombinował z ciasteczkami. Zapisujesz do ciasteczka user agent i potem po prostu porównujesz, na właściwej przeglądarce po zakończeniu pokazu slajdów lub zamknięciu przeglądarki usuwasz ciasteczko i tyle. Na pozostałych przeglądarkach sprawdzasz tylko user agent czy się zgadza, jeśli nie to wyświetlisz informacje dla użytkownika, że już ma uruchomiony pokaz w innej przeglądarce wink.gif
Go to the top of the page
+Quote Post
Adi32
post
Post #3





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Ciasteczka łatwo oszukać. Ja proponuje po IP;

  1. $_SERVER['REMOTE_ADDR']


Gdzieś tam sobie zapisujesz, w trakcje odtwarzania a przy okazji sprawdzasz czy przed chwilą z takiego IP nie było już coś odtworzone;


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post
nekomata
post
Post #4





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

Ostrzeżenie: (0%)
-----


Cytat
Luka polega na tym , że z jednego komputera można otworzyć np. 3 przeglądarki i na raz przesuwać slajdy żeby było szybciej.
Więc tak :
IP - Nie pomoże
Ciastko - Nie pomoże
Masz to w bazie tak?
No to porównuj czas poprzedniego dodanego (jeśli istnieje) z czasem aktualnym.
I wtedy do całości niema nic IP, ciastko , przeglądarka ... oszust zostanie odrzucony.
Go to the top of the page
+Quote Post
Woijtek338
post
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


No niestety , nie mam w bazie zapisywanego czasu - bo po co ? Wygląda to tak , że odlicza czas na stronie, i jak dojdzie do 0 to dodaje do tabeli dane slajdu który juz został oglądnięty przez danego ucznia i na podstawie tego określa czy slajd został zaliczony . Po IP też niezbyt - jeśli mam w sali kilku uczniów to mogą być problemy. Z Ciachami to jest wogóle możliwe ? Przeciez ciasteczka zapisują się tylko w danej przeglądarce, to skąd inna przeglądarka bedzie o tym ciachu wiedzieć ?
Go to the top of the page
+Quote Post
PanGuzol
post
Post #6





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

Ostrzeżenie: (0%)
-----


Jak uczeń jest lebrem to nawet jak go zmusisz to się nie nauczy, a jak go to będzie interesowało to nie będzie oszukiwał więc po co się męczyć.
Ja bym sprawdzał $_SERVER['HTTP_USER_AGENT'] może i nie daje 100% pewności ale zakładam, że twoi odbiorcy mogą nie wiedzieć jak to oszukać.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
Woijtek338
post
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


W sensie , żeby zapisać do bazy przy logowaniu danego uzytkownika z jakiej przeglądarki korzysta ? I potem porównać ?
Go to the top of the page
+Quote Post
lobopol
post
Post #8





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Cytat(PanGuzol @ 1.07.2011, 14:23:01 ) *
Jak uczeń jest lebrem to nawet jak go zmusisz to się nie nauczy, a jak go to będzie interesowało to nie będzie oszukiwał więc po co się męczyć.
Ja bym sprawdzał $_SERVER['HTTP_USER_AGENT'] może i nie daje 100% pewności ale zakładam, że twoi odbiorcy mogą nie wiedzieć jak to oszukać.

A co to da gdy ktoś otworzy w kilku zakładkach? Najlepsza opcja jest z czasem


--------------------
Go to the top of the page
+Quote Post
Sephirus
post
Post #9





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


hmm wydaje mi się, że mam łatwe rozwiązanie choć nie wiem jak masz to technicznie wykonane ale wygląda ono tak:

- User "A" wchodzi na konkretny pokaz 10 slajdów (przykład) strona pokaz.php, serwer zapisuje czas rozpoczęcia pokazu slajdów,
- po załadowaniu strona wysyła ajaxa że A chce slajd 1, serwer zapisuje czas żądania i wysyła slajd pierwszy,
- po obejrzeniu slajdu 1 idzie kolejny ajax, serwer sprawdza czy A obejrzal slajd 1 w żądanym czasie jeśli tak to zalicza, podaje slajd 2
- sytacja powyżej powtarza się dla wszystkich kolejnych slajdów aż do końca,
- koniec slajdów wysyłamy ajax kończący i zaliczamy prezentację itp...

Zakładam że ajax wysyła dane pod slajd.php

I teraz tak:

Ten sam user "A" w trakcie działania pokazu wchodzi jeszcze raz gdziekolwiek na świecie, korzystając z czego chce by uruchomić pokaz równoległy bo chce oszukać system,
skrypt pokaz.php sprawdza za każdym wywołaniem czy ten pokaz nie został już zaliczony i czy czasem obecny czas odjąc czas rozpoczęcia pokazu nie jest mniejszy od czasu jego trwania - jeśli jest oznacza to że user nie dokończył pokazu, lub oszukuje - wyrzucamy komunikat w stylu "Pokaz slajdów jeszcze trwa odczekaj {pozostaly_czas} by rozpocząć pokaz od nowa.

Nie do oszukania wink.gif

Do zapisu czasu rozpoczęcia pokazu użyj bazy
Do zapisu czasu rozpoczęcia oglądania slajdu wystarczy sesja

Ten systemik można oszukać - ale jest to dość trudne wink.gif



--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
by_ikar
post
Post #10





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


za pomocą sesji można np w niej trzymać ID które przy każdym logowaniu jest inne. Mieć w bazie danych tabele, w której się przetrzymuje jakby ludzi online, która jest czyszczona jakimiś tigerami po każdym update z polami starszymi niż jakiś określony czas. I teraz juzer się loguje, masz w bazie inne ID sesji, ale ID użytkownika się zgadza, tworzysz nowy rekord, a stary prawie pasujący kasujesz, wtedy wylogowuje starego usera. Coś w ten deseń jakby..

Nie wiem czy nie namieszałem więc podsumuje. W bazie trzymasz ID użytkownika i ID sesji, które jest dodawane tylko podczas logowania, podczas poruszania się po serwisie, sprawdzane jest czy ID sesji i ID usera istnieje w bazie, jeżeli nie, użytkownik nie jest zalogowany. Podczas logowania sprawdzasz czy istnieje jakiś rekord w tabeli z userami online z ID użytkownika, jeżeli istnieje kasujesz i tworzysz nowy rekord z ID użytkownika i ID sesji które właśnie zostało wygenerowane. W efekcie logując się na innej przeglądarce wyloguje go z poprzedniej. To samo tyczyć się będzie komputerów itp. Do tej tabeli możesz jeszcze IP dorzucić czy coś.

Ten post edytował by_ikar 1.07.2011, 21:20:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 05:44