質問: 通常の方法でアプリをビルドすると100MBを超えてしまうため、ゲーム部はWEBにおいて WEBViewアプリとして出そうと思いました。 そこで、android実機(あるいはアプリ経由でのアクセス)のみ許可したく思っています。 端末の識別にUserAgentを使うと思いますが、これは偽装できてしまうと思います。 なにかうまい方法はないでしょうか? 考えてみた方法 ・そもそも推測しにくいURLにする ・アプリ側で独自のUAを付加する(これもなんか見破られそう) ・アプリにパスを埋め込んで、通信時にサーバー側でそのパスが渡されてきているか判定してそれでよしとするなど いろいろ考えたのですが、解決策が見いだせません。 Android Studioを使ってビルドしています。
回答: 端末のパケットをキャプチャできることを考えると、 リクエスト情報に固定の文字を入れるやり方はUAでもURLパラメータでも偽装は可能です。 ただ、完全にブロックは出来ないけど抑制はしたい、ぐらいの温度感であれば、 質問内容のやり方を採用するのも選択肢としては十分あり得ます。 以下のようにアプリ毎に違うパラメータを持たせる方式にすれば 固定文字よりは強固になります。 1. アプリとサーバーで共通の暗号化ルールを用意する 2. アプリは初回インストール時にIDを生成しサーバーに送信 3. サーバーはIDをDBに保存 4. アプリからアクセスする際は自身のIDを暗号化しサーバーに送信 5. サーバーはIDを復号してDBに存在すればアクセスを許可する 一応補足しておくと、これでも完璧にブロックは出来ません。 apkを逆コンパイルすれば、暗号化ルールも分かってしまいます。 なのでアプリのサービスレベルによると思います。 Webサイトに端末以外からアクセスすることに大きなメリットがあるなら 逆コンパイルしてでもアクセスする人はいるでしょうし、 そうでなければ大半はブロックできると思います。