1

多くの人がブラウザベースのシンプルな(swfまたはhtml5)ゲーム(ヘビ、カーレース、ルドーなど)をプレイできるシステムを構築したいと思います。これらのゲームは非常にシンプルで、サーバーにロジックを記述する必要はありません。最高得点を獲得した人が賞品を獲得します。

ここでの問題は、ワークフローの保護です。私のアプローチは間違っているかもしれません。別の方法を提案してください。
1.ゲームが始まると、ゲームIDが生成されます。
2.ゲームが終了すると、スコアとゲームIDが返送されます。

問題は、ステップ2がスプーフィングされる可能性があることです。生成されたゲームIDと任意のスコアを使用して、誰でも同様のhttpリクエストを送信できます。スコアが私のゲームからのものであり、直接送信されていないことをどのように知ることができますか。

スコアを暗号化することを考えましたが、暗号化メカニズムはjavascriptにあり、簡単に複製できます。

助けてください、事前に感謝します。

編集1:スニファ、セッションハイジャック、中間者攻撃については心配していません。HTTPSがすべてを処理します。ユーザー自身が気になります。彼はブラウザで右クリック>検査し、送信されているリクエストヘッダーを確認できます。彼は同じリクエストヘッダーを簡単に再生できます(右クリックして新しいタブで開くだけです)

4

2 に答える 2

1

送信の署名/エンコードのレイヤーを追加してデータを不明瞭にしたり、JSコードの難読化を追加して、ユーザーがそのレベルの保護を元に戻せないようにすることができます。

しかし、最終的には問題を解決することはできません。信頼できないクライアントに対して期待どおりにコードを実行するための信頼を置いているため、当然、信頼できない出力が得られます。スコアのなりすましは、エントリの1つのポイントにすぎません。攻撃者は、クライアント側のゲームロジックの他の部分を簡単に改ざんして、不正行為を行う可能性があります。

クライアントを信頼することは、解決策がほとんどない永続的なセキュリティ問題です。誰も気にしない些細なハイスコアテーブルの場合、手動の監視と明らかに不正な提出物の整理と相まって、カジュアルな攻撃者を防ぐために大量の難読化を回避できる可能性があります。

実際に望ましい賞品を提供することを検討している場合は、ゲームの重要な部分を自分が管理するサーバーに移動する必要があるかもしれません。どの部分を保護する必要があり、どのようにゲームに大きく依存しているか、防御が難しい残留攻撃が存在する可能性があります。(たとえば、商用マルチプレイヤーサーバーベースのゲームがエイムボットのようなクライアントハッキングから防御するために費やす長さを考慮してください。)

于 2012-11-22T13:43:09.367 に答える
1

データの値にもよると思いますが、値が非常に低いようです。

機能的に推測不可能な ID を選択します。たとえば、GUID (128 ビットのランダムに生成された値)。誰かがそれを推測した場合、彼らはゲームを手に入れます。しかし、彼らがそれを正しく理解することは統計的に不可能です. また、HTTPS 経由で送信した場合、盗聴することはできません (HTTPS 経由で送信したいという理由だけで)。

よりうまくやりたい場合は、それに合わせてランダ​​ムなパスワードを選択できますが、数学がこれを必要としてサポートするかどうかは疑問です. あなたのデータは非常に価値が低いようです。それは本当に問題ですか?

FWIW、私が心配しているより大きなことは、存在しないゲームのために大量のデータを保存するように頼んで DoS することを決定した人です...

于 2012-11-21T20:29:55.097 に答える