1

サーバーでホストしている ajax API の周りにウィジェットを作成したいと考えています。ウィジェットも私のサーバーによって提供され、サードパーティの Web サイトに配置されます。ウィジェットはホスティング ページの DOM にアクセスする必要があるため (ページ上のフォーム データにアクセスするため)、iframe ではなくスクリプト タグを使用して埋め込む必要があります。

ボタンが押されると、ウィジェットが API にヒットし、応答を受け取り、それをホスティング ページのフォームに挿入します。

これまでのところ、スクリプト タグと ajax の良さをうまく使用しています。数分で概念実証が実行されました。しかし、サードパーティのページのコードを見て、サードパーティのページにもウィジェットを配置するためにそれをコピーしないようにするにはどうすればよいですか? ウィジェットは誰でも無料で利用できますが、誰がそれを使用しているかを知り、アクセスを制御したいと考えています。また、ウィジェットなしで API にアクセスできないようにしたいと考えています。

署名とハッシュのアイデア、トークンの期限切れ、サードパーティのサーバー側プロキシ、クライアントでの Flash の使用など、たくさんのアイデアをブレインストーミングしましたが、断固たるスプーファーが公正に回避できないものを思いつくことはできません。簡単に。

別の言い方をすれば、ウィジェットをレンダリングしたクライアントだけが API を呼び出して応答を取得できるようにしたいということです。

たぶん、この問題について考える別の方法がありますか?

4

1 に答える 1

0

興味のある人のために、私は解決策を考え出しました:

サード パーティの Web サイトへのログインが必要なページにのみウィジェットを表示する必要があります。つまり、公開されているページではありません。

また、ランダムなナンスを生成し、それを秘密鍵と組み合わせてハッシュを作成する数行のサーバー側コード (PHP など) をサード パーティの Web サイトに埋め込む必要があります。

$nonce = make_nonce(); $secret = 'このプロバイダー固有のキー'; $hash = sha1($nonce . $secret);

ノンスとハッシュはリクエストとともにサーバーに送信されるため、サードパーティのシステムに正しくログインしているブラウザーから送信されたものであることを検証できます。API へのヒットで使用できる API アクセス トークンをブラウザに返します。

これにより、API アクセスが特定のサードパーティ インテグレータに結び付けられます。

次に、乱用を制限するために、アクセス トークンのレートを制限して、1 人のインタラクティブなユーザーには適しているが、プログラムによる使用には適さないようにします。

また、使用した nonce を記録して使い捨てにし、アクセス トークンを取得する機能をレート制限して、サード パーティのサイトにログインしているユーザーが、要求ごとに新しいアクセス トークンを取得し続けることができないようにします。作る。

これにより、実際の顧客にまったく影響を与えることなく、悪用の可能性を大幅に制限できます。

于 2010-11-05T14:39:34.663 に答える