[解決済み] APIリクエストを自分のモバイルアプリのみに制限する
質問
REST API へのポスト リクエストを、自分のモバイル アプリのバイナリから来るリクエストのみに制限する方法はありますか。このアプリは Google Play と Apple App Store で配布されるので、誰かがそのバイナリにアクセスし、リバース エンジニアリングしようとすることを暗黙の了解としているはずです。
すべての公開されたアプリは何らかの方法で署名されなければならないので、アプリの署名に関係する何かを考えていましたが、安全な方法でそれを行う方法がわかりません。アプリの署名の取得、時間ベースのハッシュ、アプリが生成するキー ペア、そして古き良きセキュリティの組み合わせが考えられますが、不明確です。
私は、可能な限り失敗しないものを探しています。なぜかというと、電話センサーによって収集されたデータに基づいてアプリにデータを配信する必要があり、もし誰かが私自身のアプリを装い、私自身のアルゴリズムによって処理されなかったデータを私の API に送ることができれば、それは目的を破ることになるからです。
私は、どんなに複雑でも、効果的な解決策にオープンです。ブリキの帽子をかぶったような解決策は大いに歓迎されます。
どのように解決するのですか?
アプリに保存されているあらゆる認証情報は、ユーザーによって公開される可能性があります。Android の場合、ユーザーはアプリを完全に逆コンパイルして、簡単にそれらを取得することができます。
サーバーへの接続に SSL を使用していない場合、ネットワークから簡単に盗聴される可能性があります。
真面目な話、認証情報は誰でも手に入れることができるので、隠す心配はない。要するに、公開されたAPIを持っているわけです。
落とし穴もあるし、公開APIの管理には余計に時間がかかる。
多くの公開APIはまだIPアドレスで追跡し、システムを悪用していると思われるIPアドレスからのリクエストを単純にスローダウンさせるためのターピットを実装しています。この方法では、同じIPアドレスからの正当なユーザーは、遅いとはいえ、まだ継続することができます。
不正使用者と同時に無実で立派なユーザーをブロックしているかもしれないという事実にもかかわらず、IP アドレスまたは IP アドレスの範囲を遮断することをいとわない必要があります。アプリケーションが無料であれば、期待されるサービス レベルや契約がないため、より多くの自由が得られるかもしれませんが、法的な契約によって自分自身を保護したいと思うかもしれません。
一般的に、もしあなたのサービスが誰かが攻撃したいと思うほど人気があるなら、それは通常良い兆候です。アプリの失敗の理由が、遅いサーバーで待つのにユーザーが疲れたからということにならないようにしましょう。
不正使用を発見したときに、IP アドレスではなく資格情報によってブロックできるように、ユーザーに登録させるという方法もあります。
関連
-
[解決済み] Androidでデフォルト/内蔵アプリを使わずにJavaMail APIを使ってメールを送信する
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] キャンバスに複数行のテキストを描画する
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] ViewPager2でスワイプを無効にするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] RecyclerView.Stateを使って、RecyclerViewのスクロール位置を保存するには?
-
[解決済み] android: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?