Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ハッシュ値による検証の仕組みを用意し、ハイスコアのメモリ改ざんと通信パケット改ざんの対策を行いました。
セキュリティに詳しい人間ではないので中途半端な対応ですが、良かったらマージしてください。
■使い方
検証を有効にするには、RankingLoader.cs の EnabledVerifyHash を true にしてください。
■挙動
ハイスコアの登録データからハッシュ値を計算するようにしています。
検証を有効にすると、ハッシュ値が一致しない登録データははじかれます。
この時、旧来のDBに登録済みのデータはハッシュ値が登録されていないので全てエラーではじかれます。
検証が無効でも、今後新しく登録されたデータにはハッシュ値が付与されて登録されます。
なお、ハッシュの計算にクライアントキーを使用しているため、クライアントキーを変更するとDBに登録済みのデータは全て無効として扱われます。
■制限事項
改ざんされたデータを表示時にはじくことはできるのですが、改ざんされた通信パケットのDBへの登録を遮断することができません。
そのため、改ざんされた無効なデータはDBに貯まっていくことになります。
無効なデータかどうかは取得しないと分からないため、現状は60行を読み込み、そのうち無効でない30行を表示する設定にしています。
無効なデータが多くなり、有効なデータが足りなくなると、結果として表示行が少なくなります。
■メモリ改ざんの対策と注意事項
RankingRecordクラス のメモリ改ざんについては対策していますが、SampleSceneManagerクラス のメモリ改ざんは対策していません。
ただWebアプリであればメモリ改ざんは難しいのではないかと思います。
(Webアプリは試してないので間違ってるかも。。。)
念のため SampleSceneManagerクラス にコメントを残しています。