Interessantes Thema. Ich arbeite seit etwa einer Woche an einem Bomberman Klon in HTML5. Dabei sind mir natürlich auch einige Ideen gekommen, wie man das Spiel zu seinem Vorteil manipulieren könnte. Ich achte daher schon bei der Entwicklung darauf, soviele clientseitige Dinge nochmal serverseitig zu prüfen.
z.B. werden Bomben nicht direkt platziert. Stattdessen wird ein Request geschickt und der Server sendet, wenn alles passt, das Spawn-Event an alle verbundenen Clients.
Gleiches gilt für Speedhacks: Movementdaten werden protokolliert und rudimentär auf die Geschwindigkeit geprüft. Stimmt was nicht, sendet der Server dem Client ein Force-Position Paket und flagt den Client als unglaubwürdig, solange dieser die geforderte Position nicht bestätigt hat, es werden also solange keine Movementpakete mehr angenommen, bis die Position wieder stimmt. "Wall-" oder auch "no-Clip"-Hacks können so auch ganz leicht erkannt werden
Ich hab dafür einen Server mit dem
WebSocket-Protokoll in C#.Net implementiert. In meinem ersten Alphatest gabs zwar noch keine serverseitige Kollisionsprüfung, aber Bomben wurden schonmal Serverseitig geprüft
Merke: Alles was vom Client kommt ist grundsätzlich Böse... solange schuldig, bis die Unschuld bewiesen wurde *g*
Um deinen Javascript Code zu sichern, gibt es mehrere Ansätze, die aber alle nicht sonderlich schwer auszuhebeln sind. Galileocomputing hat da einige interessante Ansätze zusammengetragen, die kombiniert zumindest Skriptkiddies davon abhalten sollten, das spiel zu manipulieren.
http://openbook.galileocomputing.de/java…eschutz_001.htm