Moin!
Danke für eure Antworten, aber gibt es nicht was etwas einfacheres.
Du _hast_ bereits etwas einfaches, und das wurde manipuliert. Alles andere ist komplizierter.
Aber es kann eben auch manipuliert werden. Es gibt da keinerlei Ausweg.
Du gibst dem Benutzer das Programm in die Hand, mit dem er einen gültigen Highscore ermitteln kann. Du kannst aber nicht kontrollieren, ob die Highscores reell erspielt wurden, oder ob sie geschummelt wurden. Das Kochrezept, mit dem gültige Highscore-Meldungen an deinen Server gesendet werden können, kann vom Angreifer beliebig lange untersucht werden, um den Mechanismus und die Berechnungsformel zu verstehen. Egal ob du irreversible MD5-Summen oder irgendeine reversible Rechnung verwendest, ob du gewisse Prüfsummen einbaust oder direkt aus dem Applet heraus mit dem Server kommunizierst: Immer hängt die Korrektheit der Übertragung von der Vertrauenswürdigkeit des Benutzers ab. Und die ist nicht gegeben, wenn du nicht danebenstehst und dem Benutzer genau auf die Finger guckst, was er bzw. sein Prozessor so machen, wenn dein Applet gerade nicht ausgeführt wird.
Ist vielleicht die Abfrage des Referrers eine Möglichkeit, um zu prüfen, ob die Daten von einer Seite auf dem eigenen Server kommen? Oder kann man das "faken"?
Man kann absolut alles faken, was ein Browser irgendwie an deinen Server senden kann. Je mehr Daten "stimmen" müssen, desto schwieriger wird die Fälschung natürlich, aber sie wird niemals unmöglich. Ab einem gewissen Punkt der Komplexität der Datenübertragung zu deinem Server wird man andere Ansatzpunkte finden, um zu Highscores zu kommen. Beispielsweise das Applet angreifen, dort die Punkteberechnungsformel ändern und so für Aktionen, die nur einen Punkt bringen sollten, 100 oder 1.000.000 Punkte zu kassieren. Diese falsch erspielten Punkte werden dann vom korrekten Algorithmus verpackt und versendet.
Ich hoffe, du siehst ein, dass es ein absolut unmögliches Unterfangen ist, sichere Highscores zu empfangen. Daran versucht sich die Spieleindustrie schon, seit es Spiele gibt, insbesondere seit es Onlinespiele gibt, und hat in letzter Konsequenz wenig Erfolg. Betrüger gibt es immer, die anderen den Spielspaß nehmen, weil sie das Spiel so manipuliert haben, dass sie selbst einen Vorteil erhalten. "Cheater" werden sie genannt, und sie sind bei den großen Onlinespielen eine richtige Plage, gegen die noch kein Kraut gewachsen ist.
Einzige Chance: Nicht der Client darf die Gewinnsituation und Highscore-Rechnung anstellen, sondern der Server. Die Spielereingaben werden über das Applet nur einfach an den Server weitergereicht, sozusagen als verlängerte Tastaturleitung. Über das Programm auf dem Server hast du ja die Kontrolle, ebenso dann über gültige Eingaben und die Berechnung des Highscores. Allerdings muß man dazu natürlich ständig online sein, die Methode erfordert bei Action-Spielen außerdem eine sehr verzögerungsarme Leitung (ansonsten werden Benutzer mit langsamen Leitungen (PING-Zeit) wie z.B. Modems enorm benachteiligt.
Keiner der Lösungsansätze ist jedoch "einfach".
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)