5

だから私はJavaScriptを使ってゲームを書いていますが、それに関する最大の問題は、JSについて十分な知識を持っている人なら誰でも、私のソースコードを開いて、それがどのように機能するかを理解game.score = 100000000000000;し、コンソールに接続できることです。ただし、スクリプトを難読化する以外に、すべてを無名関数でラップすることでうまくいくようです。

(function() {
    game_start = function() {
        //etc
    }
    //etc
 })();

Chromeコンソールからコードを実行しようとすると、が表示されundefinedます。これは望ましい結果ですが、私のメソッドを回避して役に立たない方法はありますか?または、コンソールから実行されないようにするためのより良い方法はありますか?

4

2 に答える 2

4

人がだまされないことを保証する方法はありません。ひどく難読化されたコード(私はのようなものについて話しているH5b(b){if(b.pd()&&b.Ca&&b.gKa){var a=b.ra(RT.Nwa))でも、UIの変更やネットワーク要求を監視し、そこから追跡することができます。

一部の人々はスコアを検証するためにAJAX呼び出しを使用します。たとえば、スコアが増減するたびに、アプリはバックエンドに対してAJAX呼び出しを行い、バックエンドでもスコアを追跡します。ユーザーが最終スコアを送信すると、バックエンドスコアと照合され、それが異なる場合は、その人が不正行為をしていることがわかります。

ただし、これは、人々がそれらのajax呼び出しを行うスクリプトを作成することを妨げることはなく、その方法でスコアが有効になります。

tl; dr:いいえ、ユーザー側のコードが危険にさらされていないことを確認する方法はありません。

于 2012-09-19T00:17:32.790 に答える
2

申し訳ありませんが、ゲームが自分のマシンで実行されているときにユーザーが不正行為をするのを本当に防ぐ方法はありません。ユーザーのマシンで実行されるコードはすべて、ユーザーが操作できます。不正行為を不可能にしたい場合は、すべてのゲームロジックをサーバーに実装する必要があります。プレーヤーが知らないはずの情報を送信したり、プレーヤーに許可されていないコマンドを受け入れたりしないでください。行う。

于 2012-09-19T00:09:40.187 に答える