51118


例えば、ブラウザ上でプレイできるテトリスを実装したとして、そのランキングをサーバー上で集計するとします。

ユーザーがプレイを終えたタイミングで、ゲームサーバーにスコア情報を通信しますが、それが、ユーザーが例えばブラウザ上の DevConsole
を開くなどして、通信先を特定し、スコア情報更新 api
を特定し、そこに任意のスコアを入力してサーバーに送信することで、任意の点数をサーバーに登録できしてしまうような気がします。

### 質問

ゲームサーバーで例えばランキングを集計する場合、不正なリクエストを防ぐにあたって、どのような手段が取られますか？


CC BY-SA 4.0
2018-12-09T19:06:59.187
51073
2018-12-12T06:19:33.217
2018-12-09T23:27:14.140
3060
754
question
security
ゲームサーバーで、不正なリクエストを防ぐ方法は？


数コマンドごとに、プレイヤーのコマンドと得点をサーバーに送信して、サーバー側でシミュレーションした得点と一致するか検証すると良さそうです


CC BY-SA 4.0
2018-12-11T09:57:15.967
51118
2018-12-11T09:57:15.967
30800
51073
answer


@Liamovwv さんのおっしゃるように、クライアント側の、最終結果に至る途中のデータも送信させ、それをサーバー側で検証する、というのが一般的なそうです。

また、ゲームの種類によっては、ゲームのステータスなどはすべてサーバー側で管理してしまって、クライアントはただインタラクティブなレンダリング・インターフェースの提供に徹するようなアーキテクチャもありうるそうです。


CC BY-SA 4.0
2018-12-12T06:19:33.217
51140
2018-12-12T06:19:33.217
754
51073
answer