私はモバイルアプリのスイートとそれに付随するWebサービスを構築しています。アプリからWebサービスへの接続を(妥当なレベルまで)保護するために、2本足のOAuthアプローチを使用しており、各アプリは一意のコンシューマーキー/シークレットを使用しています。
私の問題は、モバイルアプリが実際にサーバーから受信した応答を確認する方法です。たとえば、ユーザーがブール値のセットを渡すことによって特定の機能にアクセスできるかどうかを確認するエンドポイントがある場合、私が知る限り、誰かがホストファイルを変更し、それらを示すなりすまし応答を返すのを止めることはできません。すべてにアクセスできます。これは正しいです?
私が提案する解決策は、サーバーが認識している応答シークレットをアプリに保存することです。サーバーが応答を送信すると、シークレットと組み合わされたデータのハッシュが生成されます。次に、アプリはハッシュを再生成し、一致するかどうかを確認します。このように、ユーザーはアプリに保存されている秘密を知っている場合にのみリクエストを乗っ取ることができます。
この問題を解決するためのベストプラクティスはありますか?
HTTPSでWebサービスをホストするだけで問題が解決するのでしょうか、それとも誰かがWebサービスを複製して、なりすましの応答を返すことができるのでしょうか。
どうもありがとう