私の同僚と私は、MMO用の信頼できるサーバーを開発しています。 「不正な」クライアントの処理方法については合意できません。この場合の誤動作とは、侵害された/変更されたクライアントを示す可能性のある「奇妙な」要求を送信するクライアント、または通信ストリームに直接データを挿入する悪意のあるユーザーを意味します。
私たちの1人は、問題のある要求を中止し、クライアントのデータを保存し、クライアントの接続を強制的に閉じる(「強制終了する」)必要があると考えています。もう1つは、要求を中止し、「失敗した」応答をクライアントに返す必要があると考えています。
どちらのアプローチが最適かを判断できないため、行き詰まっています。私たちは両方とも議論を生み出しましたが、私たちのどちらかを揺さぶるのに十分なものは何もありませんでした。
参考までに、ここで検討したことがいくつかあります。
私たちの議論についてのフィードバックはありますか?どちらかを選択する理由は他にありますか?業界標準、またはベストプラクティスのコンセンサスさえありますか?
適切なコードレビューにより、このような間違いを回避できます。
さらなる問題を防ぐために悪意のあるクライアントを「殺す」ことは重要ですが、個人的には、クライアント接続を「殺す」前に、悪意のあるソースに関する情報をできるだけ多く収集することをお勧めします。
悪意のあるアクティビティを回避しないと、さらに悪用されるリスクがあります。
これは最終的にはゲームのアーキテクチャと設計に依存しますが、提案されたMMOについて多くの詳細を知らなければ、このアクションは間違いなく即時の緩和策になりますが、攻撃のソースをログに記録することが重要です(日付/時間/ srcIP/dst IP /ポート/プロトコル/攻撃タイプ)インシデント対応。サイバー攻撃は避けられませんが、前述のデータを収集すると、さらなる脅威を検出、封じ込め、根絶するのに役立ちます。