0

私はモバイルアプリのスイートとそれに付随するWebサービスを構築しています。アプリからWebサービスへの接続を(妥当なレベルまで)保護するために、2本足のOAuthアプローチを使用しており、各アプリは一意のコンシューマーキー/シークレットを使用しています。

私の問題は、モバイルアプリが実際にサーバーから受信した応答を確認する方法です。たとえば、ユーザーがブール値のセットを渡すことによって特定の機能にアクセスできるかどうかを確認するエンドポイントがある場合、私が知る限り、誰かがホストファイルを変更し、それらを示すなりすまし応答を返すのを止めることはできません。すべてにアクセスできます。これは正しいです?

私が提案する解決策は、サーバーが認識している応答シークレットをアプリに保存することです。サーバーが応答を送信すると、シークレットと組み合わされたデータのハッシュが生成されます。次に、アプリはハッシュを再生成し、一致するかどうかを確認します。このように、ユーザーはアプリに保存されている秘密を知っている場合にのみリクエストを乗っ取ることができます。

この問題を解決するためのベストプラクティスはありますか?

HTTPSでWebサービスをホストするだけで問題が解決するのでしょうか、それとも誰かがWebサービスを複製して、なりすましの応答を返すことができるのでしょうか。

どうもありがとう

4

2 に答える 2

0

HTTPS はこの正確な問題を解決するように設計されており、うまく機能します (もちろん、信頼されるべきではない証明書をクライアントが信頼するようにだまされないことを前提としています - これはほとんどの実際のモバイル アプリでは問題になりません)。シナリオ)。独自のソリューションを発明しようとするのではなく、HTTPS に固執します。具体的には、提案されたソリューションでは、攻撃者がアプリの 1 つのコピーを手に入れるだけで、それをリバース エンジニアリングし、シークレットを抽出して、他のすべてのコピーを攻撃できます。

于 2012-10-06T17:59:52.733 に答える