0

ユーザーのデータを保存する Web サイトがあります。他の Web サイトがユーザーごとに保存されたデータにアクセスし、新しいデータをアップロードできるようにする Wordpress プラグインを開発しています。

たとえば、ジョーは私のウェブサイトでアカウントを作成し、情報をアップロードします。Joe は自分の Web サイトにプラグインをインストールして、自分の Web サイトから私の Web サイトに保存したデータにアクセスできるようにします。

Joe の Web サイトへの訪問者は、私の Web サイトの Joe のアカウントにデータをアップロードできます。Joe の Web サイトは、誰がアクセスできるか、誰が変更できるか、誰が私の Web サイトの Joe のアカウントに新しい情報をアップロードできるかを決定します。

Web サイトで API を公開し、Wordpress プラグインがアクセスできるようにすることを考えました。Joe の Web サイトには、彼の Web サイトが私の Web サイトに対して認証できるようにする API キーがあることを理解しています。しかし、他の誰かがその API キーを使用して Joe の Web サイトになりすますことを防ぐにはどうすればよいでしょうか?

私がやりたいことの同様の実装を見たことがあります。クライアント側でコードを調べると、API キーを確認できます。その API キーを使用して Web サイトになりすますことを防ぐにはどうすればよいでしょうか?

Joe の Web サイトへの訪問者に API キーが表示されないように、API キーを保護する方法はありますか?

ここでこの回答を見ました:APIキーを安全に使用する方法

しかし、Joe の Web サイトが私の Web サイトへのリクエストでキーを投稿した場合、訪問者はまだキーを見ることができないでしょうか?

ありがとう。

4

1 に答える 1

4

API キーは、他の Web サイトのサーバー側で Web サイトと通信するために使用されるため、クライアントはそれを見ることができません。

API キーをユーザー ブラウザから直接使用してサイト リソースにアクセスすることはできません。これは、セキュリティ リスクのためにブラウザによってブロックされるクロスサイト リクエスト フォージェリになるためです。

サイトへのリクエストも暗号化 (https) されている場合、誰かが何らかの方法でトラフィックを監視していても、API キーを取得することはできません。

実装方法:

ユーザー プロファイルを更新するには、他のサイトの要求を処理できる URL が必要です。たとえば、次のようになります。

www.yoursite.com/api/updateprofile

ここで、GET/POST リクエストによって提供されるデータをサポートするか (または両方をサポートするか) を決定する必要があります。

たとえば、GET 要求をサポートしたい場合は、他のサイトに、上記の URL で次のパラメーターを指定して操作を実行できることを伝えます: api_key、user_id、first_name (オプション)、last_name (オプション)

サイトでの使用例:

www.yoursite.com/api/updateprofile?api_key="key"&user_id=1&first_name="joe's new first name!"

これをサイトに実装するには、API キーを検証しながら、リクエストを解析してパラメータを取得してみてください。

よくわかりませんが、PHPの構文は次のようなものだと思います。

var api_key = GET["api_key"];
var user_id = GET["user_id"];

更新 2:

以下は、説明するための図です。

Joe のユーザー ブラウザ <----> Joe のサーバー ---(API_KEY)---> サイトの API

クライアントはキーにアクセスできません。Joe のサーバーはキーをクライアントにまったく送信しないため、クライアントはあなたのサイトが存在することさえ知りません。

于 2013-09-28T14:36:44.440 に答える