###前提・実現したいこと
スマホゲームのランキングサーバのチート対策を実現しようと考えています。具体的には、ユーザがクライアント側でゲーム(例えばシューティングゲーム)を行い、ゲーム終了時のスコアを
{ "user_id": 123456789, "score": 34567}
のようなパラメータでサーバに送信してもらいます。ユーザがゲームをするクライアントはブラウザ・iOS・Androidの3つに対応させようとしています。
###調査したこと
スコアを送信する際に、通信データを偽装することでスコアを異常に高くするなどのチートが可能になってしまいます。チート対策の分かり易い資料として、以下のスライドがあります。
一般的なチートの手法と対策について
http://www.slideshare.net/ssuser741a3c/ss-62940759
この資料では通信データ偽装への対策としてハッシュを用いる方法が解説されています。
- クライアント側で「送信データ」のハッシュ値を生成
- 「送信データ」とハッシュ値をペアで送信
- サーバ側で「送信データ」からハッシュ値を生成し、クライアントから送られてきたハッシュ値と一致することを確認
といった方法です。
###疑問
上記の方法を用いると、**「クライアントで行っているハッシュ値生成のアルゴリズムを秘匿できれば」**という条件付きで通信データ偽装を防ぐ事ができるかと思います。しかし、ブラウザやAndroidではユーザがコードを見ることが可能なので、どんな処理でハッシュ値を生成しているか分かってしまいます。これを防ぐには、どのようにすればよいのでしょうか?難読化で処理を見にくくするしかないのでしょうか?
上記のスライドの方法以外でも、定石の手法などがありましたら教えて頂きたく思います。ふわふわとした質問になってしまいましたが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/23 10:15
2016/12/23 10:39
2016/12/23 11:12