0

Web サービスを介してサーバーに接続する WebApp を構築しています。Web アプリケーションを使用するユーザー (ログインはありません) は、自分のスコアをサーバーに送信できます。

コードは主に JavaScript で記述されているため、誰でも読むことができます。

これを行うための 100% の保証方法がないことはわかっているので、ユーザーが誤ったスコアを送信するのをできるだけ難しくする方法のアイデアを探しています。

アイデア?10倍!

編集

サーバー側 Web サービスは、IIS でホストされる asmx (.net) Web サービスです。必要に応じて変更できます。

4

2 に答える 2

2

最善の方法は、サーバー側で GUID を生成する Web サービス呼び出しを行うことです。GUID は返されます。これがセッション トークンになります。データベースまたはサーバーのキャッシュに保存されます

後続の各呼び出しでは、トークンを検証するサーバーにトークンを渡す必要があります。彼らが悪いトークンを渡した場合、あなたは更新しません。

これは、呼び出しが正しいプロセスから来ることを保証するだけです。1 回の呼び出しでエントリを偽装することはできません。

于 2012-09-26T15:56:52.517 に答える
0

インタラクション ポイントの数が限られているプロセス (ゲームについて話しているように見えますか?) の場合、各ユーザー インタラクションを記録し、それを再生して、サーバー側で特定のスコアが得られることを確認できます (リアルタイムのいずれかで)。疑わしいスコアについては後で)。

それ以外の場合 (これは通常、インタラクション ポイントが多すぎるリアルタイム アクション ゲームでは実用的ではありません)、できることはあまりありません。ゲームが送信する情報にデジタル署名することはできますが、署名キーを含む完全なコードをクライアント側に渡すと、攻撃者がキーを取得して無効なスコアに署名することは依然として簡単です。

この時点で、難読化の軍拡競争に巻き込まれます。攻撃者がキーを取得するのを防ぐために、クライアント側のコードをどの程度判読不能にして解読しにくくすることができますか? このゲームに勝つことはできません。カジュアルな攻撃者を抑止するだけです。そして最終的には、クライアント側のプロセス全体を変更から保護し、他のすべての形式の不正行為 (たとえば、Firebug を使用してスコアやライフなどの変数を変更するなど) を停止する必要があります。

于 2012-09-26T17:07:22.460 に答える