サーバーのURLからニュースフィードを取得するモバイルアプリがあるとします。
GET/ https://example.com/api/v1/newsfeed
このエンドポイントへのアクセスをモバイルアプリ内からのみに制限する方法はありますか。スクリプト(Python、NodeJs、...)またはソフトウェア(Postman、ブラウザ...)として提供される他のソースではありませんか?
このURLはバイナリでコンパイルする必要があると思います。リクエストが保護されているため(https)、パケットスニッフィングソフトウェアはベースURL(この場合はexample.com)のみを公開し、エンドポイントと本文は暗号化されます。
しかし、私はこのエンドポイントを知る方法がまだあると思います。 2つの可能性があると思う
大まかなアイデアはありますが、これら2つの方法の技術的な実現可能性についてはわかりません。
証明書の固定を実装することで、最初の可能性の脅威を軽減できます。これにより、サードパーティの証明書がAPPによって発行および信頼されるのを防ぎます。
逆コンパイルに関しては、URLを隠そうとすることもできますが、動的分析では最終的にURLを見つけることができます。
代わりに、サーバー側でチェックを実行することができます。サーバーにチャレンジを発行させ、クライアントはチャレンジへの応答を作成するためにいくつかの作業を行います。これにより、記述されたエクスプロイトの難易度が高くなる可能性があります。
簡単な解決策の1つは、リクエストのヘッダーを確認し、ユーザーエージェントやその他の属性などが期待どおりであることを確認することです。
アプリケーションをサーバーに登録します-登録プロセスの一環としてデバイスにシークレットを安全に保存します。これはAPKの逆コンパイルのみに対処します
プロトコルに関する限り、そのPythonまたはデバイスが他の端に到達する場所ですべて同じかどうかは関係ありません。
攻撃者がロック解除された電話に物理的にアクセスできる場合、または電話に何かをインストールできる場合-コントロールは重要ではありません。ユーザーアカウントが侵害され、そのAPIを呼び出すことができます。