2012-04-01 13 views
2

私の個人的なウェブサイト上のeBayの検索APIに基づいてデモのJavaScriptアプリケーションを公開しようとしています。 AppIDが読み込まれて悪用されないようにする方法があるかどうか疑問に思っていました。 AppIDを特定のドメインに関連付けることはできますか?私は、eBay開発者フォーラムや公式文書でも答えを見つけることができませんでした。eBay APIに基づくJavaScriptアプリケーションでAppIDを保護するにはどうすればよいですか?

答えて

3

クライアントにデータを送信すると、クライアントはデータを読み取ることができます。これを防ぐ方法はありません(もしJavaScriptがそれを解読できるなら、ユーザーもそうすることができます)。これを避けるには、サイト(AppID)にデータを保存し、サーバー上でリクエストを処理する必要があります。したがって、JavaScriptはあなたのサーバーと通信する必要があり、サーバーはeBayに要求を渡してAppIDを追加し、その結果をJavaScriptに戻します。あなたの質問に答えるために

+0

あなたの答えをありがとう、ロブ。 はい、私はデータを取得するためにサーバー側のPHPスクリプトを調理することになります。私は、eBayがセキュリティ対策を実装しなかった理由を考えていました。たとえば、Etsy JavaScript APIコントロールパネルでは、開発者はドメイン単位でアクセス制限を設定できます。 –

+0

私はEtsyインターフェイスに精通していません。もう少し説明できますか?私はここであなたが "ドメイン"を意味するか分からない。 AuthDomain? IPブロック?ユーザーにAPIキーが与えられたとき、これは実際にどのように機能しますか? –

+0

Etsyは参照先アドレスのチェックを実行します。コントロールパネルで指定されたドメインと一致しない場合、データは返されません。確かに100%の信頼性の高いセキュリティ手段ではないとしても、開発者は少なくともJavaScriptルーチン(読み取り可能なAppIDを持つ)の悪用を最小限に抑えることができます。 –

1

...

制限はそのように、サイトごとに動作しない、あなたは通常、すべてのあなたの使用のために一つだけのAppIDを持っているとしてAppIDsを制限することができていないようです/ sites。 2010年のthis comprehensive thread(以下引用)を参照してください。最終的には、ウェブサイトの検索結果などの読み取り専用アプリケーションでは基本的に問題になりません。

は、より一般的には、ブラウザ

JSON API呼び出しの確保に関するリファラをチェックすると、そうでない場合は、パブリックAPIを確保するための最良の方法です。これは、Googleが地図用のAPIキーを制限する方法です。https://developers.google.com/maps/documentation/javascript/tutorial

APIがサードパーティのコンピュータから呼び出された場合、アクティビティの監視が詐欺防止になる唯一のことは、他のWebサイトのアクティビティへの呼び出しのリストを比較するか、JSONPを使用してAJAXでブラウザのプロパティを検査することによって、悪用される可能性があります。 Googleでは、Googleアナリティクスの呼び出しとAPI呼び出しを相互参照することができます。たとえば、常に誤認がある可能性があります。最後に

、恐怖はCSRFであれば、このあります: How to reliably secure public JSONP requests?

URLを再び変更する場合にはeBayのスレッドからそのまま引用:

開発者アカウントあたり1つのDEVIDがあります。

複数のAppIDが存在する可能性がありますが、有料のサポートチケットでのみ利用できます。

各AppIDは複数のCertIDを持つことができます。 CertIDはあなたのコール制限を決定します。

各AppIDに対して無制限のトークンを生成できます。各トークンは、AppID、UserID、および関連するeBayユーザーのパスワードのペアです。トークンは現在、18ヶ月間アクティブです。それらは次に再生されなければならない。トークンは、APIまたはウェブサイトのプレミアムを介して早期に「取り消し」される可能性もあります。

トークンを必要とするAPIファミリでは、独自のユーザーIDに基づいて単一のトークンを使用して、ほとんどの公開情報を取得できます。ただし、プライベートトランザクションの詳細は、ターゲットUserIDに対して生成されたトークンを使用する場合にのみ使用できます。実際にはトークンからUserIDが導出される場合があります。

複数のアプリケーションが同じAppIDを共有している場合、それらは毎日の呼び出し制限に寄与します。だからあなたは別のAppIDを要求したいかもしれません。

https://www.x.com/developers/ebay/ebay-api-call-limits

チャートに示す制限は、所与のAPIの家族のために「集約」です。暗黙の1つのAppIDがあります。 Trading APIの場合、eBayは、通話ごとまたは時間間隔ごとの使用をさらに制限します。 AddItemのようないくつかの呼び出しには上限があります。 GetApiAccessRulesは実際の制限と使用法を返します。

IPアドレスごとに、発信側のコンピュータのIPアドレスを指定します。複数のIPアドレスを使用して移動する場合は、実際には上限を倍増します。 JavaScriptやFlashで書かれた、クライアントのブラウザで実行される、クライアントIPを使用して呼び出しを行う、多くの読み取り専用ウィジェットがあります。その場合、コールの制限はかなり重要ではありません。

AppID、DevIDおよびCertIDは、開発者アカウントの作成者に属します。その作成者はAPIライセンス条項に拘束されます。

キーの所有者は、APIの第三者によるプログラムによる制御を許可しないでください。厳密に言えば、これは、キーとそれらのキーから派生したトークンの両方が非公開(すなわち、排他的な制御下)のままでなければならないことを意味する。

明らかに、eBayは厳密な解釈を強制しません.FetchTokenはクライアント側のアプリケーションに推奨されるためです。洗練されたユーザーは、トークンの着信または発信を容易に取得できます。誰かが自分のUserIDに基づいてトークンを使って何をすることができますか?

  1. あなたの毎日のコール制限
  2. を通じてバーン議論の詳細はライセンス

に違反するAPIアプリケーションを作成し、これ以前のスレッドを参照してください。

アプリケーションがeBay互換アプリケーションチェックを通過すると、ユーザーあたり1.5M共有または20Kコールをリクエストできます。

eBayのAPIについて詳しくは、their forumをお尋ねください。

関連する問題