翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GAMESEC03-BP03 ゲームバックエンドサービスを使用して、マルチプレイヤーゲームに参加するプレイヤーリクエストを検証する
通常、マルチプレイヤーゲームでは、プレイヤーは利用可能なセッションのリストからオプションを直接選択してゲームセッションに参加するか、マッチングを見つけるリクエストを送信します。後者のアプローチでは、ゲーム開発者が対象となるゲームセッションを見つけ、接続情報 (通常は IP アドレスとポート番号) をプレイヤーのゲームクライアントに提供する責任があります。実装は、開発するゲームのジャンルによって異なる場合がありますが、ゲームに参加するプレイヤー のリクエストをサーバー側で検証することはセキュリティのベストプラクティスです。
このベストプラクティスを活用しない場合のリスクレベル: 中
実装のガイダンス
たとえば、セッションベースのマルチプレイヤーゲーム では、プレイヤーからのゲームセッションへの参加リクエストは、ゲームサーバーへの接続を承認する前に、ゲームバックエンドマッチメーキングサービスでゲームサーバーソフトウェアによって検証する必要があります。プレイヤーがゲームセッションへの参加をリクエストすると、ゲームサーバーは、プレイヤーセッション ID や、ゲームバックエンドマッチメーキングサービスによってゲームクライアントに以前に提供されたサーバー生成チケットなどの一意の識別子のリクエストをチェックする必要があります。
ゲームサーバーへの接続を開始すると、サーバー側のソフトウェアはこの情報を使用して、プレイヤーの接続リクエストが有効であることをマッチメーキングサービスで検証し、 プレイヤーが以前に別のプレイヤーのゲームセッションで予約されたスポットに参加していないことを確認できます。
Amazon GameLift でホストされているゲームについては、このタイプのサーバー側の検証を実装する方法の例については、「Amazon GameLift サーバーとのゲームクライアント/サーバーインタラクション 」を参照してください。
お客様事例
AnyCompany Games の最初のベータ版の起動中に、プレイヤーがゲームサーバーに直接接続してマッチメーキングシステムをバイパスしていることを発見し、競争上の整合性に関する重大な問題を引き起こしました。ランクの高いプレイヤーは、サーバー IP アドレスを友人と共有できることに気付いたとき、スキルベースのマッチメーキングシステムの回避を開始しました。その結果、経験豊富なプレイヤーは初心者試合に参加し、新しいプレイヤーに苛立たしい経験をします。AnyCompany Games は、マッチメーキングリクエストごとに一意のセッションチケットを生成するサーバー側の検証システムを実装することで応答しました。システムでは、プレイヤー IDs とマッチメーキングリクエストチケットの両方が必要であり、バックエンドマッチメーキングサービスに対して検証済みの接続試行が必要でした。
実装手順
-
プレイヤーセッション IDsやサーバー生成チケットなどの一意の識別子を使用して、プレイヤー参加リクエストをサーバー側で検証します。
-
不正アクセスをブロックするために、マッチメーキングサービスとの接続リクエストの有効性を確認します。
-
検証プロセス中に、ゲームセッションの予約済みスポットが権限のないプレイヤーによってアクセスされていないことを確認します。