3

Web アプリケーションを作成しましたが、REST API を作成して、サード パーティの開発者がプロ​​グラムできるようにしたいと考えています。次に、いくつかの一般的な言語 (JavaScript、PHP、Ruby など) でいくつかのクライアント ライブラリを構築して、開発者が各リクエストの JSON 応答を手動で解析するのを避けることで、私のサービスを快適に使用できるようにしたいと考えています。

これまで API インフラストラクチャを構築したことがないので、次の質問があります。サード パーティの開発者によって呼び出された API メソッドの使用状況を追跡したいと考えています。各開発者は、API を使用する前に登録する必要があるため、各要求を登録済みの開発者に関連付けたい (したがって、特定の使用制限を設定するなど)。

リクエストを認証するために、開発者がすべてのアプリで使用できる一意の API キーを開発者ごとに作成することを考えました。しかし、彼が私の JavaScript ラッパーを使用することにした場合、悪意のあるユーザーがクライアント アプリ ページのソース コードを表示して、彼の API キーを取得できることに気付きました。そのため、クライアント アプリがホストされるドメインに関連付けられた、すべてのアプリケーションに対して一意の API キーを作成する方がよいと判断しました。そのため、ユーザーが他の誰かのキーを取得したとしても、最初に登録されたドメインの外では役に立ちません。しかし、私は考えました:モバイルアプリはどうですか?Web サイト以外からの呼び出しの場合はどうなりますか? ドメインがない場合、または IP アドレスが静的でない場合、ドメインを介してキーを認証するにはどうすればよいですか?

任意のヒント?

ありがとう!

4

1 に答える 1

1

マルコ。まだこれに取り組んでいるかどうかはわかりませんが、念のため: 主な目標がさまざまなサイトからの API の使用状況を追跡することである場合、開発者ごとに一意の API キーを割り当てるのは正しいことです。ただし、JavaScript の場合、リクエストはその開発者からのものではありません。エンドユーザーのコンピューターから送信されます ( JavaScript で同一ドメイン ポリシーを回避するためにJSONPを使用していると仮定します)。HTTP_REFERER を使用してドメイン制限を強制することはできますが (つまり、1.2.3.4.comcast.net からリクエストを受け取りますが、その HTTP_REFERER は www.developer.com です)、明らかに悪意のあるユーザーがその REFERER をスプーフィングする可能性があります。

もう 1 つのオプションは、JSONP を回避し、JavaScript ライブラリにローカル プロキシを付属させることです。そうすれば、AJAX 呼び出しがユーザーのブラウザーから開発者のサーバー (セッション Cookie/クラムで検証) に送られ、開発者のサーバーがサーバーに接続します (簡単に IP を制限したり、強力な認証を使用したりできます)。

それが役立つことを願っています。

于 2010-10-26T00:58:45.860 に答える