Daten manipulationssicher übertragen (HighScore)

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
dige
Beiträge: 1179
Registriert: 08.09.2004 08:53

Daten manipulationssicher übertragen (HighScore)

Beitrag von dige »

Hallöchen, ich bräuchte mal ein bischen Input, wie man von einer WebApp Daten an einen Server manipulationssicher übertragen kann.

Für ein Spiel soll das Ergebnis in eine Online-HighScore Liste auf einen Server übertragen werden. Wie kann ich das erschweren oder gar
verhindern, dass man im Browser Debugger den Post einfach editierten und erneut absenden kann?

Stehe gerade auf'm Schlauch ... jemand eine Idee?
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Daten manipulationssicher übertragen (HighScore)

Beitrag von STARGÅTE »

Ich habe die Punkte zusammen mit dem Namen und "geheimen Text" in einen Hash umgewandelt und mit an den Datenstrom gehangen. Wenn dann jemand die Punkte oder Namen ändert, passt der hash nicht.

Hier mal mein ganz altes Thema dazu: viewtopic.php?f=8&t=12857
Zuletzt geändert von STARGÅTE am 16.03.2021 17:53, insgesamt 2-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Daten manipulationssicher übertragen (HighScore)

Beitrag von NicTheQuick »

Genau, pack einfach eine Signatur dazu. Das ist zwar immer noch nicht 100% sicher, wenn sich der Angreifer tiefer im JS-Code wühlt und ihn auch noch versteht, aber im Grunde ist das genau das, was Stargate empfiehlt.

Du hast Daten und eine geteilten Schlüssel zwischen Client und Server. Jetzt machst du SHA1(Daten + Schlüssel) und hängst das noch hinten an die Daten an. Der Server empfängt das alles, trennt Daten von SHA1 und schaut, ob SHA1(Daten + Schlüssel) gleich dem übergebenen SHA1 sind. Falls ja, dann ist alles gut, falls nicht, wurde irgendwo was manipuliert.
Bild
Benutzeravatar
dige
Beiträge: 1179
Registriert: 08.09.2004 08:53

Re: Daten manipulationssicher übertragen (HighScore)

Beitrag von dige »

Oki, Danke für die Tipps. :allright: Dann werde ich einen gesalzenen Hashwert verwenden.

Ich hatte gehofft, es gibt vielleicht eine Methode, die auch trotz JavaScript reverse engineering
sicher ist.

Eventuell könnte man die Übertragung noch mit dem Challenge-Response-Verfahren und
kurzem Timeout härten.. na mal sehen :-)
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Daten manipulationssicher übertragen (HighScore)

Beitrag von NicTheQuick »

Naja, letztendlich kommt irgendwo diese Highscore her, die du versenden willst. Solange man diese Zahl irgendwo schon vor dem Versenden ändern kann (z.B. Debugger im Firefox), dann kannst du echt wenig machen. Den Post-Request selbst kannst du aber ganz gut absichern mit dem Hash.

Noch besser ist es eben, wenn das Spiel regelmäßig Zwischenstände an den Server schickt und dieser wiederum jeden einzelnen Zwischenstand einer Plausbilitätsprüfung unterzieht. Würde der Nutzer die Highscore am Ende dann abändern und senden, könnte der Server sie ablehnen, weil das Ergebnis nicht zu den vorherigen passt.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6994
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Daten manipulationssicher übertragen (HighScore)

Beitrag von STARGÅTE »

Ich meine wenn das Bewertungssystem (also das Scoring) für das Spiel lokal stattfindet, hast du ja auch da schon das Problem, dass jemand einfach das Spiel "hacked" und sich dann einfach mehr Punkte vergibt. Da ist es dann auch egal, die sehr das Senden des Ergebnisses dann noch Überprüft wurde.
Wenn du da also sicher gehen willst, dass nur reale Punkte eingetragen werden, muss der Server die Bewertung vornehmen, wie es Nic ja schon angedeutet hat und dann brauchst du gar kein Sendekram mehr, weil der Server ja genau weiß wie viele Punkte dir wirklich zustehen.

Vielleicht kannst du ja Spoilern, um welche Art von Spiel es sich handelt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
dige
Beiträge: 1179
Registriert: 08.09.2004 08:53

Re: Daten manipulationssicher übertragen (HighScore)

Beitrag von dige »

Ich dem Fall geht es nur um die Übertragung von Zeit und Anzahl Züge bei einem Puzzle Spiel.
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Antworten