HTML5-Canvas JavaScript Game Sicherheitsproblem
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
antwort
code
dank
datenbank
ende
festlegen
funktion
gedanke
generator
idee
level
minimal vorkommen
sache
speichern
spiel
statistik
stellen
url
verschiedene plattformen
weit jemand
-
Hey Community!
Ich hab letztens ein Browser-Spiel gemacht, dass so ähnlich ist wie Doodle Jump, adzu habe ich nur das HTML5-Canvas Element und JavaScript benutzt.
Das Spiel beinhaltet einen kleinen "Shop" mit Upgrades, eine Datenbankverbindung in der Highscores/Spielerdaten gespeichert werden, und natürlich das Spiel selber.
Ziel des Spiels ist es natürlich so hoch wie möglich zu kommen und so viele Gegner wie möglich platt zu machen. Es gibt verschiedene Platformen auf die man springen kann ihnen wird per Math.rnd()-Funktion eine Art zugewiesen.
So und nun zum eigentlichen Problem:
Ein erfahrener user kann per "Element untersuchen" im Browser in den JS-Code und verschiedene Variablen einfach ändern und so den Spielverlauf zu seinem Vorteil gestalten... zum Beispiel das die Platformen nur noch am rechten Rand erscheinen und nur die besten Platformen erscheinen...
Hat jemand eine Idee wie man dieses Problem lösen kann?!
Ist ja im Prinzip ein gravierendes Sicherheitsproblem in quasi allen HTML5-Browsergames...
Hab schon länger mit diesem Problem zu kämpfen, wäre sehr dankbar für Lösungsvorschläge!!!
Gruß Patrick Haude -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
EDIT: Auch ich habe schon darüber nachgedacht und noch nie ein Spiel gefunden, bei dem es nicht möglich war, zu bescheissen. Als Beispiel Cookie Clicker oder Angry Birds online, aber auch FaceBook games mit Millionen von Nutzern. Was im Client abläuft, kannst du nicht überprüfen und solang dein Spiel in JavaScript läuft, kann man auch Sachen verändern.
Du könntest aber das Level generieren, auf der Datenbank speichern und nur eine ID übergeben und wenn der Spieler stirbt, nochmal überprüfen, ob es noch deinem Level entspricht. Wenn nicht, ist die Score nicht gültig.
Eine andere Möglichkeit wäre, den Code so zu verwüsten, dass es unmöglich ist, herauszufinden, welche Funktion das level auslöst, bzw die Variabeln für die Plattformen heraus zu finden.
Beitrag zuletzt geändert: 18.1.2014 13:27:39 von c143 -
Okay da muss ich mal nach einem code-uglifier oder sowas suchen, ist eine gute Idee :D Da müsste man sich dann schon intensiv mit auseinandersetzen bis man was positiv verändern kann.
Danke für die Antwort :) -
patrickhaude schrieb:
Okay da muss ich mal nach einem code-uglifier oder sowas suchen, ist eine gute Idee :D Da müsste man sich dann schon intensiv mit auseinandersetzen bis man was positiv verändern kann.
Danke für die Antwort :)
Ich habe gerade noch meinen Post editiert, mir ist noch die Idee gekommen, das Level in einer Datenbank zu speichern und am Ende des Spiels noch mal zu überprüfen ob es noch deinem Level entspricht. Wenn nicht, ist die Score nicht gültig.
EDIT: Noch ein Gedanke. Mach eine Statistik, wie viel verschiedene Plattformen getroffen wurden. In deinem Level generator musst du festlegen, wie viel minimal vorkommen sollten pro 100m z.B. Wird dieser Wert nicht eingehalten, Score ungültig. Richte dich bisschen an realistischem und wenn das nicht eingehalten wird, weisst du, dass etwas verändert wurde. Wenn du dir genug solche Sachen überlegst, wie z.B. auch Höhe / Zeit wird es nahe zu unmöglich. Das muss dann aber in PHP überprüft und verglichen werden, sonst kann einfach die Überprüfung gelöscht werden. Wenn dann noch dein Script extrem durcheinander gewühlt ist, nicht nur encoded bist du auf einer sicheren Seite.
Möglich ist es immer, nur überleg dir wie weit jemand gehen würde, um in deinem Spiel zu bescheissen. :D Niemand will ein ganzes Script sortieren um die Funktion und Variabeln zu finden.
Übrigens würd ich mir das Spiel gerne mal anschauen. :)
Beitrag zuletzt geändert: 18.1.2014 13:39:26 von c143 -
Danke für die ausführliche Antwort! :D
Würde es gerne schon online stellen, habe nur im Moment noch keine Datenbank.
Ich kann aber denke ich gleich mal die erste Version von dem Spiel online stellen, die ist zwar nicht so umfangreich und noch ein bisschen verbuggt braucht aber keine Datenbank.
Dürfte eigentlich nicht so lange dauern ich sag dir dann Bescheid :)
Ich habe gerade noch meinen Post editiert, mir ist noch die Idee gekommen, das Level in einer Datenbank zu speichern und am Ende des Spiels noch mal zu überprüfen ob es noch deinem Level entspricht. Wenn nicht, ist die Score nicht gültig.
EDIT: Noch ein Gedanke. Mach eine Statistik, wie viel verschiedene Plattformen getroffen wurden. In deinem Level generator musst du festlegen, wie viel minimal vorkommen sollten pro 100m z.B. Wird dieser Wert nicht eingehalten, Score ungültig. Richte dich bisschen an realistischem und wenn das nicht eingehalten wird, weisst du, dass etwas verändert wurde. Wenn du dir genug solche Sachen überlegst, wie z.B. auch Höhe / Zeit wird es nahe zu unmöglich. Das muss dann aber in PHP überprüft und verglichen werden, sonst kann einfach die Überprüfung gelöscht werden. Wenn dann noch dein Script extrem durcheinander gewühlt ist, nicht nur encoded bist du auf einer sicheren Seite.
Möglich ist es immer, nur überleg dir wie weit jemand gehen würde, um in deinem Spiel zu bescheissen. :D Niemand will ein ganzes Script sortieren um die Funktion und Variabeln zu finden.
Übrigens würd ich mir das Spiel gerne mal anschauen. :)
EDIT: so hab die einfache Version mal online gestellt: http://www.patrickhaude.lima-city.de/
Beitrag zuletzt geändert: 18.1.2014 15:14:20 von patrickhaude -
patrickhaude schrieb:
Danke für die ausführliche Antwort! :D
Würde es gerne schon online stellen, habe nur im Moment noch keine Datenbank.
Ich kann aber denke ich gleich mal die erste Version von dem Spiel online stellen, die ist zwar nicht so umfangreich und noch ein bisschen verbuggt braucht aber keine Datenbank.
Dürfte eigentlich nicht so lange dauern ich sag dir dann Bescheid :)
Ich habe gerade noch meinen Post editiert, mir ist noch die Idee gekommen, das Level in einer Datenbank zu speichern und am Ende des Spiels noch mal zu überprüfen ob es noch deinem Level entspricht. Wenn nicht, ist die Score nicht gültig.
EDIT: Noch ein Gedanke. Mach eine Statistik, wie viel verschiedene Plattformen getroffen wurden. In deinem Level generator musst du festlegen, wie viel minimal vorkommen sollten pro 100m z.B. Wird dieser Wert nicht eingehalten, Score ungültig. Richte dich bisschen an realistischem und wenn das nicht eingehalten wird, weisst du, dass etwas verändert wurde. Wenn du dir genug solche Sachen überlegst, wie z.B. auch Höhe / Zeit wird es nahe zu unmöglich. Das muss dann aber in PHP überprüft und verglichen werden, sonst kann einfach die Überprüfung gelöscht werden. Wenn dann noch dein Script extrem durcheinander gewühlt ist, nicht nur encoded bist du auf einer sicheren Seite.
Möglich ist es immer, nur überleg dir wie weit jemand gehen würde, um in deinem Spiel zu bescheissen. :D Niemand will ein ganzes Script sortieren um die Funktion und Variabeln zu finden.
Übrigens würd ich mir das Spiel gerne mal anschauen. :)
EDIT: so hab die einfache Version mal online gestellt: http://www.patrickhaude.lima-city.de/
Sieht aber schon mal ziemlich cool aus :) Eine Datenbank solltest du dir ja bald ersteigern können, dann schaffst du das mit dem cheaten auch noch! Kannst ja dann mal ein par Freunde von deiner Ausbildung fragen, ob sies noch irgendwie hin bekommen zu bescheissen :D -
Jo mache ich danke fürs feedback :)
EDIT: Achja das Spiel läuft im Moment nur in Chrome also nicht wundern!!:D
Beitrag zuletzt geändert: 19.1.2014 16:16:47 von patrickhaude -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage