Skip to content

issue #11 ランキング登録の通信パケット改ざんの対策 #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

umanicof
Copy link

@umanicof umanicof commented Dec 2, 2019

ハッシュ値による検証の仕組みを用意し、ハイスコアのメモリ改ざんと通信パケット改ざんの対策を行いました。
セキュリティに詳しい人間ではないので中途半端な対応ですが、良かったらマージしてください。

■使い方
検証を有効にするには、RankingLoader.cs の EnabledVerifyHash を true にしてください。

■挙動
ハイスコアの登録データからハッシュ値を計算するようにしています。
検証を有効にすると、ハッシュ値が一致しない登録データははじかれます。
この時、旧来のDBに登録済みのデータはハッシュ値が登録されていないので全てエラーではじかれます。
検証が無効でも、今後新しく登録されたデータにはハッシュ値が付与されて登録されます。
なお、ハッシュの計算にクライアントキーを使用しているため、クライアントキーを変更するとDBに登録済みのデータは全て無効として扱われます。

■制限事項
改ざんされたデータを表示時にはじくことはできるのですが、改ざんされた通信パケットのDBへの登録を遮断することができません。
そのため、改ざんされた無効なデータはDBに貯まっていくことになります。
無効なデータかどうかは取得しないと分からないため、現状は60行を読み込み、そのうち無効でない30行を表示する設定にしています。
無効なデータが多くなり、有効なデータが足りなくなると、結果として表示行が少なくなります。

■メモリ改ざんの対策と注意事項
RankingRecordクラス のメモリ改ざんについては対策していますが、SampleSceneManagerクラス のメモリ改ざんは対策していません。
ただWebアプリであればメモリ改ざんは難しいのではないかと思います。
(Webアプリは試してないので間違ってるかも。。。)
念のため SampleSceneManagerクラス にコメントを残しています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant