![]() |
![]() ![]() |
![]() |
![]()
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ć ? |
|
|
![]()
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
![]() |
|
|
![]()
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;
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...
|
|
|
![]()
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. |
|
|
![]()
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ć ?
|
|
|
![]()
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" |
|
|
![]()
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ć ?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 729 Pomógł: 346 Dołączył: 4.04.2009 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ć. A co to da gdy ktoś otworzy w kilku zakładkach? Najlepsza opcja jest z czasem -------------------- |
|
|
![]()
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 ![]() 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 ![]() -------------------- 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... |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:44 |