2011-08-10 5 views
16

Biorąc pod uwagę grę po stronie klienta (pozwala nazwać ją grą X) i bazę danych po stronie serwera, która przechowuje najwyższe wyniki, jak może po zakończeniu stanu gra bezpiecznie sumbit wysoki wynik na serwerze w sposób, który można zrobić tylko wtedy, gdy gra była rzeczywiście odtwarzana (w ten sposób, aby zapobiec przejęciu postu).Jak bezpiecznie przesłać wysoki wynik w grze z wyprzedzeniem, aby zapobiec przejęciu kontroli pocztowej

danego zbioru tutaj ten problem kilka pomysłów myślałem o

** Po grze zacząć wysyłać identyfikator sesji, który wygasa po określonym czasie należy przesłać do serwera w celu weryfikacji

problemem jest to, że mogą być łatwo wykorzystane przez wnioskujące id startu wtedy tylko kucie wynik

** Punkty kontrolne w grze to stanowisko do serwera w celu weryfikacji dana osoba jest rzeczywiście PLA ying grę

znowu to może być syntetyzowany z pewnym podstępny skryptów

+0

Pomyśl o przekształceniu tego w pytanie ... –

+0

Myślę, że jest to pytanie @marc B – samccone

+0

@Marc B: "... jak można po zakończeniu stanu gry bezpiecznie sumbit wysoki wynik na serwerze. .. ". Jak to jest mylące? –

Odpowiedz

8

Prześlij powtórkę gry i zweryfikować wynik z tego powtórki na serwerze. Oczywiście działa to tylko wtedy, gdy gra obsługuje powtórki.

Przynajmniej utwórz szorstki rejestr tego, co się dzieje w grze i zastosuj pewne sprawdzenia wiarygodności.

Powinieneś także dodać kilka sprawdzeń spójności gry. W przeciwnym razie użyję tylko narzędzia takiego jak ArtMoney i zmieni wynik w trakcie gry.

Ale w końcu, jeśli użytkownik napisze bota, robi się naprawdę ciężko.

+0

Wygląda na to, że ktoś widział wideo GWT. : D –

+0

@Amaan Co to jest GWT? – CodesInChaos

+0

Google Web Toolkit. Podobny porad udzielili w swoim wideo wprowadzającym. –

1

... Czy to ma swój identyfikator sesji z serwera, połączyć je z czegoś w grze i użyć jej jako klucza szyfrującego, następnie w przekazywać dane wysłać cokolwiek dane chcesz + znacznik czasu lub coś innego z punktów kontrolnych w grze

Może używać SessionID + checkpoint id do szyfrowania klucza

+2

Co powstrzymuje osobę przed odczytaniem klucza zawartego w grze i modyfikacją wyniku przed jego przesłaniem. Nic. Tego nie można zrobić. – Matt

+0

Cóż, na koniec dnia każde rozwiązanie, które wiąże się z wysyłaniem danych wynikowych z powrotem na serwer, może zostać zerwane. Wszystko zależy od podniesienia poprzeczki wystarczająco wysoko, gdzie większość ludzi nie oszuka się z robieniem tego. – iamkrillin

1

Co o coś takiego:

  1. że serwer wysyła identyfikator jednorazowy - „hash podpisany” przez tajnego klucza serwera i datownik itd
  2. Czy hash opartą na pewnych wewnętrznych datastructures + klienckich klucz i wysłać go na serwer okresowo
  3. Czy to przez SSL

i @iamkrillin pokonać mnie do niego ... ale nadal jestem zamiar po to :)

+1

A to nie powiedzie się, jeśli użytkownik nieznacznie zmieni funkcję wysyłającą najlepszy wynik, aby wysłać wartość 10 razy wyższą. Żadna ilość szyfrowania nie uratuje Cię, jeśli klient zostanie przejęty. –

+0

Dodając do tego, co powiedział @Wladimir - zamiast wysyłać akcje, można przesłać "hasz" struktur danych, o czym wspomniałem - powinieneś być w stanie "odtworzyć" ważność tych danych ... wybierając tylko kilka te będą komplikować problem wystarczająco, aby ktoś złamał system – PhD

+0

@Wladimir: Wysłany komentarz. Twój komentarz pojawił się równolegle :) – PhD

5

Nie ma sposobu, aby zapobiec manipulowaniu stroną klienta. Jest kontrolowany przez gracza i mógł wprowadzić subtelne zmiany w logice aplikacji po stronie klienta, które nie będą wykrywane po stronie serwera. Jedyne rozwiązanie, o którym wiem, to wysyłanie wszystkich działań użytkownika na serwer (wszystkie na raz na końcu gry lub nieprzerwanie, gdy użytkownik gra) i sprawdzenie serwera przez serwer (ponowne obliczenie wyniku). Jeśli działania skutkują wynikiem, który według użytkownika osiągnął, zaakceptuj wynik. Jeśli działania nie pasują do wyniku - odrzucenie. Znacznie trudniej będzie generować fałszywe działania, które są logicznie spójne.Nie powstrzyma to jednak wszystkich technik oszustwa (google for "aiming proxy", coś podobnego może być również możliwe w twojej grze).