0

モバイル アプリにコンテンツを提供する API がありますが、その API を他の製品に使用する予定はありません。主な質問が 2 つあります。

  1. 誰かが API リクエストをスニッフィングして独自のリクエストを作成するのを防ぐ方法 (これはパブリック API であってはなりません)。
  2. #1を完全に防ぐことができない場合、承認されていない消費者からのリクエストを制限/調整するにはどうすればよいですか? 他に懸念事項はありますか?

各リクエストに認証トークン (GET パラメータとして渡される) を使用すると、#2 は満たされますが (いつでも取り消すことができます)、将来別のトークンを使用するためにアプリを更新する必要はありません。

また、モバイル アプリでのユーザー認証はなく、API は PHP で記述されています。

この分野でのベストプラクティスは何ですか?

4

2 に答える 2

3

API をプライベートに保つのに役立ついくつかの提案を次に示します。

  • TLSを使用して、カジュアルなパケット スニッフィングを思いとどまらせます。
  • MITM攻撃を防ぐために、クライアントがサーバー証明書を検証していることを確認してください。
  • クライアント コード内の認証トークンを暗号化または難読化して、文字列ダンプなどで明らかに公開されないようにします。

ただし、最終的に誰かが本当に API にアクセスしたい場合は、クライアント コードをリバース エンジニアリングするか、より複雑なデータ傍受技術を使用します。期待できる最善の方法は、平均的なユーザーによるアクセス試行を思いとどまらせることです。

于 2013-05-03T16:39:38.010 に答える
1
  • 誰かが API リクエストをスニッフィングして独自のリクエストを作成するのを防ぐ方法 (これはパブリック API であってはなりません)。

スニッフィングを防ぐために回線上のトラフィックを暗号化するために、当然のこととして TLS を使用する必要があるという以前の回答を繰り返します。ただし、「キャプチャリプレイ」攻撃も抑止する必要があることを付け加えておきます。これにより、攻撃者は、TLS を使用しているにもかかわらず、(クライアント側のログなどから) 取得した可能性のある以前のメッセージを再送信する可能性があります。この場合、リクエストで nonce (「number once」を意味する) および/またはタイムスタンプを使用し、HMAC 署名を使用している場合、リプレイされた API リクエストを検出してブロックすることができます。この例については、ブログhttp://www.soatothecloud.com/2011/02/securing-apis.htmlに書いています。たとえば、Amazon の API はこのアプローチを使用しています。

  • #1を完全に防ぐことができない場合、承認されていない消費者からのリクエストを制限/調整するにはどうすればよいですか? 他に懸念事項はありますか?

HMAC 署名 (上記) と同様に、着信 IP アドレス範囲、デバイス情報 (デバイスの種類を示すヘッダー - Android と iOS など)、および複数のリクエストを特定のクライアントにリンクするために使用できるその他の要素を監視することも検討できます。 、API レベルでポリシーを適用します。

完全開示:私は API Management / API Gateway ベンダー (Axway) で働いていますが、上記の情報は一般的なものでなければなりません。

于 2013-10-27T05:03:42.393 に答える