Nie wysyłaj po prostu liczby całkowitej na serwer. Wyślij zbiór statystyk gry, których można użyć do zweryfikowania, czy wynik był realistyczny. Lub możesz wdrożyć wstępnie udostępniony klucz do obliczania wyniku. Możesz przesyłać przyrostowe wyniki i statystyki w trakcie gry i upewnić się, że wzrost jest rozsądny.
Jednak nie martwiłbym się tym zbytnio. Powyższe sugestie utrudnią, ale nie niemożliwe, przesłanie fałszywego wyniku. Jeśli jednak trochę to utrudnisz, zdecydowana większość osób grających w twoją grę nie będzie zainteresowana próbami oszukiwania.
Uważaj na sposób, w jaki pozwalasz grze komunikować się z serwerem. Nie chcesz, aby twoja gra była punktem wejścia na twój serwer do hakowania. Upewnij się, że zawsze weryfikujesz dane wejściowe i nigdy nie ufasz klientowi.
Jak powiedział Byte56: „nigdy nie ufaj klientowi”, ale:
Nigdy nie ufając klientowi, ma swoją cenę:
Posiadanie wszystkich gier na serwerze znacznie zwiększy koszty infrastruktury.
Zakładając, że większość graczy nie będzie oszukiwać,
a najwyższy wynik osiągnie po pewnym czasie i przestanie się dużo zmieniać
jest środkowa droga.
Nagraj gry (na kliencie).
(W zależności od rodzaju gry może to być bardzo łatwe (np. Szachy) lub nieco skomplikowane (np. FPS dla wielu graczy),
ale zawsze jest to wykonalne.)
Gdy gracz zakończy grę, po prostu prześlij wynik.
Jeśli wynik znajduje się w pewnym zakresie na górze (np. 1% lub 5%),
zażądaj zarejestrowanych danych od gracza
i powtórz tę grę na serwerze.
Jeśli wyniki są zgodne, zaakceptuj wynik.
W ten sposób nie potrzebujesz żadnych dodatkowych zasobów po stronie serwera dla większości gier,
ale możesz zapewnić, że najlepsze wyniki są prawidłowe.
źródło
Nie martw się o to; ochrona przed wszystkimi atakami jest zasadniczo niemożliwa, jeśli ufasz klientowi. Jeśli nikt nie używa Fiddlera itp., Aby zmodyfikować żądanie AJAX, może po prostu odpalić debuger JS i zmodyfikować dane gry, aby dać sobie 1000 żyć, itp., Lub zmodyfikować kod lub wykonać 100 innych rzeczy, o których nie pomyślałeś.
Napisałem taką grę kilka lat temu i według mojej najlepszej wiedzy nikt nie oszukiwał w ten sposób. Nie było nagrody, oprócz wpisania twojego nazwiska na tablicy wyników.
źródło
Zmniejsz społeczną motywację do oszukiwania, np. Korzystając z liderów społecznościowych (oszustwo tylko sprawia, że dobrze wyglądasz dla garstki przyjaciół, nie psuje to wszystkim).
Zweryfikuj na serwerze. Joel Poloney dobrze napisał techniki w Game Developer 2012 September „Scale Your Online Game”
źródło
Jeśli chcesz stworzyć grę online odporną na oszustwa, musisz obsługiwać całą logikę gry na serwerze. Wszystko, co dzieje się po stronie klienta, może być kontrolowane i manipulowane przez użytkownika. Istnieją techniki, takie jak szyfrowanie lub zaciemnianie, które można wypróbować, ale w końcu wszystko to po prostu bezpieczeństwo poprzez zaciemnienie, które może być omijane przez kogoś, kto jest wystarczająco zdeterminowany.
Oczywiście, gra, która działa na serwerze, jest o wiele bardziej skomplikowana do opracowania, wymaga dużo więcej zasobów po stronie serwera, a opóźnienie sieci ma negatywny wpływ na wrażenia z gry (szczególnie w przypadku szybkich gier), ale jest to jedyny sposób na skuteczne zapobiegać oszukiwaniu graczy.
źródło