2012-04-05 12 views
2

Mein Fokus in dieser Frage ist HTML5-Spiele zu machen. Ziel ist es, Betrug zu reduzieren/zu verhindern.Ändern von Variablen in einer Schließung

Wenn eine Variable im globalen Gültigkeitsbereich die Punktzahl enthält, zum Beispiel var score = 0, ist es wirklich einfach zu betrügen, indem Sie einfach javascript:void(score = 9999999999); ausführen.

Aber wenn ich etwas mehr wie folgt aus:

(function() { 
    var score = 0; 
    // game logic here 
})(); 

Ist score zugänglich etwas außerhalb der Schließung? Gibt es eine Möglichkeit für den Spieler, sie zu modifizieren und somit ihre Punkte zu verfälschen?

Antwort

2

außerhalb dieses Verschlusses, score existiert nicht (oder zumindest, dass score nicht).

Wenn Sie Cheater verhindern wollen, ist die einzige wirkliche Möglichkeit, wenn das ganze Spiel auf der Client-Seite läuft, die Spielumgebung und Benutzereingaben auf dem Server wiederherzustellen und zu validieren.

Sonst kann jeder Ihren clientseitigen Code ändern und senden, was er zu Ihrem Server wünscht.

+0

Ich weiß, dass das vollständige Verhindern von Betrug ziemlich unmöglich ist, aber mit einer Kombination von richtigen Schließungen, Verschlüsselung der Client-Server-Kommunikation und Verschleierung des Codes kann ich hoffen, es zumindest signifikant zu reduzieren. Danke für die Bestätigung der Antwort für mich. –

+1

@Kolink Keine Sorge. Ich liebe HTML5-Spiele, zeig mir dein Spiel, wenn es fertig ist :) – alex

4

Alles, was auf der Client-Seite passiert, ist "hackbar", weil Sie einfach keine Kontrolle darüber haben. Die einzige Möglichkeit, dies zu verhindern, ist die serverseitige Validierung (z. B. AJAX-Aufrufe).

Ist die Punktzahl von etwas außerhalb der Schließung zugänglich?

Nein ist es nicht.

Gibt es eine Möglichkeit für den Spieler, sie zu modifizieren und somit ihre Punkte zu verfälschen?

Yup. Siehe meine erste Aussage.

Verwandte Themen