0

私の前の質問: Javascript ゲームのタイミングを確保する

... Javascript/Canvas ゲームでのクライアント側のタイミングは、単純に安全ではないことが明らかになりました。私はクライアントを信用しないというマントラを知っています - それがそもそも私の苦労の原因です. :-)

したがって、すべてのタイミングをサーバーに移動して処理する場合は、フォローアップの質問があります。送信する前に、ゲームを完了する必要があることは明らかです。ゲーム パズルはすべて Javascript であるため、クライアント側のコードを操作してゲームの完了を偽装するという問題が発生します。

ゲームの JS コードを別のクラス ファイルに作成しました。そのようにゲームをインスタンス化すると:

var game;
$document.ready(function(){
  game = new Game();
});

...その後、「ゲーム」オブジェクトとそのすべてのメソッドと変数にコンソールからアクセスできます。

しかし、もしそうなら:

$document.ready(function(){
  var game = new Game();
});

...その後、コンソールから「ゲーム」オブジェクトにアクセスできません。これは役に立ちそうですが、私が知らないことはありますか - このオブジェクトは、私が知らない何らかの方法でアクセスできますか、それともその関数のプライベート変数をもう少し安全にしていますか?

ありがとう!

4

1 に答える 1

0

コンソールはあまり気にしないでください。はい、ゲームに「勝つ」ためにメソッドを簡単に起動できるグローバルオブジェクトがある場合、チートする可能性は十分にありますが、実証したように簡単に防ぐことができます。

したがって、ハッカーは、サーバーに対して行われる要求をリッスンし (ネットワーク ペインを確認)、手動でそれらを起動するだけです。/action=startやのような単純な URL であれば/action=end、タイミングを気にせずに手動で非常に簡単に起動できます。そのため、資格情報トークンを追加するなどして、それを防ぐ必要があります (実際に安全にすることはできませんが)。または、ゲームプレイ中に公開され、正当性を証明するためにサーバーに送信する必要がある「秘密」をゲーム コードに埋め込むこともできます。もちろん、コードから読み取ることはできますが、ハッカーにとって複雑すぎるようにする必要があります。あいまいさによるセキュリティに少し似ています…</p>

于 2012-10-12T18:28:01.567 に答える