6

現在、単純な Javascript ゲームのために、サーバーからのデータを検証する手法を確立しようとしています。Javascript アプリケーションを保護しようとすると、定義上、すべてのコードがクライアント側で利用できるため、多くの問題があることを理解しています。

たとえば、ゲームなので、次の場合:

  var playerScore = 100

人々が単に Javascript を編集してそのまま実行するのを止めるために...

  var playerScore = 10000000

...サーバー上で検証します。ただし、これは (私には) ゲームをハッキングするための非常に些細な手順を追加するだけのように思えます。ハッカー\調整者は、私の Ajax リクエストの送信先を自分のローカル ファイルに変更することはできませんでしたか?

クライアントとサーバーの間で、日付などの共通の値のオンザフライキー\暗号化を比較しようと考えましたが、暗号化方法は目に見えるので避けるのは簡単です。

これは非常に幅広いテーマであることは承知していますが、誰かに推奨できるベスト プラクティスはありますか? この投稿 ( Javascript ゲームの微調整/ハッキングを防止する) を見たことがありますが、特定の改ざんの防止に関しては役に立ちましたが、正しいサーバー側の検証が行われていることを確認する方法がわかりません。

いつもありがとうございます。

4

2 に答える 2

1

最初のステップは、JavaScript 変数をユーザーから隠すことだと思います。

ゲーム変数を JavaScript クロージャー内にラップして、外部からアクセスできないようにします。

var gameSettings = {};
(function () {
    var playScore = 100;

    $.get("/Game/UserPlayScore", { userId: 'userId' }, function (data, status) {
        if (status === "success") {
            playScore = data.playScore;
        }
    });

    gameSettings.userPlayScore = function() {
        return playScore;
    };
}());

// playScore is unaccessible from outside the function
// but you can read the value by calling gameSettings.userPlayScore();
于 2013-05-19T11:33:02.727 に答える