1. ホーム
  2. android

[解決済み] APIリクエストを自分のモバイルアプリのみに制限する

2023-05-02 20:04:14

質問

REST API へのポスト リクエストを、自分のモバイル アプリのバイナリから来るリクエストのみに制限する方法はありますか。このアプリは Google Play と Apple App Store で配布されるので、誰かがそのバイナリにアクセスし、リバース エンジニアリングしようとすることを暗黙の了解としているはずです。

すべての公開されたアプリは何らかの方法で署名されなければならないので、アプリの署名に関係する何かを考えていましたが、安全な方法でそれを行う方法がわかりません。アプリの署名の取得、時間ベースのハッシュ、アプリが生成するキー ペア、そして古き良きセキュリティの組み合わせが考えられますが、不明確です。

私は、可能な限り失敗しないものを探しています。なぜかというと、電話センサーによって収集されたデータに基づいてアプリにデータを配信する必要があり、もし誰かが私自身のアプリを装い、私自身のアルゴリズムによって処理されなかったデータを私の API に送ることができれば、それは目的を破ることになるからです。

私は、どんなに複雑でも、効果的な解決策にオープンです。ブリキの帽子をかぶったような解決策は大いに歓迎されます。

どのように解決するのですか?

アプリに保存されているあらゆる認証情報は、ユーザーによって公開される可能性があります。Android の場合、ユーザーはアプリを完全に逆コンパイルして、簡単にそれらを取得することができます。

サーバーへの接続に SSL を使用していない場合、ネットワークから簡単に盗聴される可能性があります。

真面目な話、認証情報は誰でも手に入れることができるので、隠す心配はない。要するに、公開されたAPIを持っているわけです。

落とし穴もあるし、公開APIの管理には余計に時間がかかる。

多くの公開APIはまだIPアドレスで追跡し、システムを悪用していると思われるIPアドレスからのリクエストを単純にスローダウンさせるためのターピットを実装しています。この方法では、同じIPアドレスからの正当なユーザーは、遅いとはいえ、まだ継続することができます。

不正使用者と同時に無実で立派なユーザーをブロックしているかもしれないという事実にもかかわらず、IP アドレスまたは IP アドレスの範囲を遮断することをいとわない必要があります。アプリケーションが無料であれば、期待されるサービス レベルや契約がないため、より多くの自由が得られるかもしれませんが、法的な契約によって自分自身を保護したいと思うかもしれません。

一般的に、もしあなたのサービスが誰かが攻撃したいと思うほど人気があるなら、それは通常良い兆候です。アプリの失敗の理由が、遅いサーバーで待つのにユーザーが疲れたからということにならないようにしましょう。

不正使用を発見したときに、IP アドレスではなく資格情報によってブロックできるように、ユーザーに登録させるという方法もあります。