2

モバイルアプリケーションの HTTP リクエストを識別 (認証) することはできますか? たとえば、Web サーバーからのリクエストは、ドメインまたは IP によって識別できます。それがどこから来るかを知っていると仮定すると、リクエストを受け入れるか、予期しない発信元から来た場合は拒否できます。

doe のモバイル アプリケーションには、ある種の一意の ID (模倣できない) がありますか?

4

3 に答える 3

3

モバイル アプリ (ネイティブ コンパイル アプリ) から安全な HTTP 呼び出し (Web サービス API) を行う必要がある場合は、次の方法を試すことができます。

編集:このアプローチは、ユーザーが認証目的でアプリを操作することに依存できないことを前提としています (ユーザーにアプリで安全なパスワードを入力するように求めることができるため)。

  1. アプリを実装していると仮定して、ある種のシークレット API キーをコードに保存します。

  2. アプリが HTTP 経由で API 呼び出しを行う場合、常に HTTPS を使用して行われます (したがって、すべてが暗号化されます)。

  3. アプリはシークレット API キーを URL パラメーターとして送信します。

  4. サーバーは、秘密鍵が正しいかどうかを確認して認証します。

アプリのトラフィックをスニッフィングしても、秘密鍵は明らかになりません (HTTPS のため)。

ほとんどの場合、誰かがアプリをリバース エンジニアリングして内部の秘密鍵を発見することに対して脆弱です。これは、さまざまな難読化およびアンチデバッグ技術を使用することで困難にすることができますが、完全に不可能にすることはできません。コンパイルされた言語 (Web アプリ用の JS ではなく、Objective-C など) を使用している限り、特別なゲームがなければ、これはすでに困難です。API キー文字列をそのまま配置することを避け、アプリで短いコードを使用して計算すると、発見するのが約 1000 倍難しくなります。

特定の問題について詳しく知らなければ、別のアプローチを提案することは困難です。違うものをお探しの場合は、詳細をお知らせください。

于 2013-02-17T15:26:59.213 に答える
2

「モバイル アプリケーション」をどのように定義するかによって異なります。モバイル デバイスで実行されているアプリケーションはありますか? モバイル デバイスで Web ブラウジングを実行していますか? あなたにとってモバイルデバイスとは何ですか?

とにかく、一般的な短い答えは、HTTP ヘッダーで送信された User-Agent を使用してデバイスの種類を検出できるということです。一般的なモバイル ブラウザはすべてこれを送信します。ただし、次のことに注意してください。

  • なりすましができる(簡単に)
  • 一部のアプリケーション (iPhone や Android アプリなど) は、HTTP 要求でユーザー エージェントを送信しないように記述できます。ただし、ユーザー エージェントを送信することがベスト プラクティスとして義務付けられています。

これを行うためのより信頼できる方法を知りません。また、物事が HTTP 経由で行われる限り、クライアントについて確実に知る方法は通常ありません。ほとんどすべてのユースケースで、User-Agent を見れば問題ありません。

該当する場合は、さまざまなデバイス データを含む User-Agent データベースへのアクセスを購入できます。そのうちの 2 つはWURFLまたはDeviceAtlasです。

于 2013-02-17T14:57:27.210 に答える