Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Gra ninjatyper - eksperyment z canvas i js, Zabezpieczenie gry przed oszustwem, która działa w czasie rzeczywistym
redeemer
post
Post #1





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


http://cinu.pl/projects/2012/ninjatyper/

Gra jest klonem konsolowej gry typespeed. Powinna działać na chrome / ff / opera. Na ie ze względu na dźwięk a raczej brak obsługi .ogg jest niegrywalna (jest to raczej eksperyment, więc to olałem).

Przypuśćmy teraz, że chciałbym zrobić listę z wynikami. Zabezpieczenie polegałoby na tym, aby to serwer tak naprawdę decydował o wszystkim, tzn. losował/generował kolejne słowa, po przesłaniu słowa, które wprowadza użytkownik, to serwer decydował by o przyznaniu punktów (musiałby również sprawdzać czas, który upłynął od wygenerowania do wpisania - bo użytkownik może sobie przecież całą grę zwolnić do dowolnego tempa) itd. Dodatkowo dochodzi problem, że gdy serwer prześle słowo do klienta nie może być ono ani jawne, ani szyfrowane symetryczne (użytkownik musi wpisywać słowa "ręcznie", a nie z automatu). Myślałem nad generowaniem obrazka z tekstem (tak jak w przypadku captcha), aby potencjalny użyszkodnik nie miał by już tak łatwo. W tym przypadku mógłbym za każdym razem generować obrazek ze słowem w czasie rzeczywistym i wysyłać do klienta, lub też przy starcie gry wygenerować od razu je wszystkie razem z unikalnymi hashami dla każdego odświeżenia strony (lub sesji), przesłać je wszystkie do klienta, a później serwer przesyłałby tylko odpowiednie hashe.

Co myślicie ? Może ktoś ma jeszcze jakiś pomysł?

PS. Nie chodzi mi o zaciemnianie kodu czy inne tego typu praktyki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Komunikacja: Nie przesadzaj z UDP tutaj. Przy takiej grze nawet AJAX + Long Polling pewnie dałby radę bez najmniejszego problemu, jednak użycie WebSockets będzie lepszym rozwiązaniem. Tutaj opóźnienie rzędu pół(torej) sekundy nie powinno być specjalnie odczuwalne dla gracza. Chyba, że pytasz ogólnie o gry, w tym np. FPS-y. Wtedy rzeczywiście szybka komunikacja i dublowanie połowy silnika w kliencie jest istotne.

Co do Twojej gry:
1. Serwer musiałby posiadać kolekcję z wyświetlanymi napisami w danej rozgrywce, gdzie co chwila dodawałby nowe pozycje. Po wpisaniu "strtotime" w grze, serwer sprawdzałby czy taki wpis istnieje. Jak nie, nic nie robi. Jak tak, usuwa go i dodaje punkty. Dodatkowo co jakiś czas po stronie serwera musiałoby dojść do usunięcia przestarzałych wpisów (tj. tych, które są już poza ekranem rozgrywki).
2. Jak sam zauważyłeś, serwer nie mógłby jawnie przesyłać do klienta informacji o pojawieniu się nowego elementu (np. "filter_var"). Przesłanie linka do unikalnego* obrazu, a którym byłby dynamicznie generowany napis do dobry pomysł. Przed OCR-em w takiej grze nic Cię nie ochroni, no chyba, że napisy a'la reCAPTCHA. (IMG:style_emoticons/default/wink.gif)

* unikalnego, to znaczy że jeżeli w ciągu 5 sekund pojawi się dwa razy pozycja "var_dump" to jeden link będzie prowadził do /images/dsadsfvcxvnsdkf.png, a drugi do /images/tyutuitputyu.png.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 09:34