4

私は、顧客が私のアプリケーションの特定のデータにアクセスできるようにするDrupalモジュールを構築しているWebアプリケーションを持っています。

Drupalモジュールのコピーにその値を入力する必要がある顧客に秘密のAPIキーを配布するつもりです。次に、このDrupalモジュールは私のWebアプリケーションと通信しますが、POSTリクエストが実際にそのソースから送信されていることを確認する必要があります。

この「秘密鍵」を使用して、アプリケーションがそれを受信したときに知っている情報を渡すにはどうすればよいですか。

(a) its from that client's server.
(b) it hasnt been eavesdropped on / copied and used by someone else?

このAPIキーをパスワードとして使用して、POSTリクエストの残りの部分と一致する一部のデータを暗号化する必要がありますか?それを受け取ったら、APIキーのコピーを使用して復号化し、残りのデータと一致する場合は、検証済みと見なしますか?

私のためにこれを行うフレームワークはありますか?Zend内に何かありますか?

4

2 に答える 2

4

HTTPS を使用し、リクエストで API キーを送信するだけです。それはとても簡単です。

HTTP を使用すると、車輪を再発明することになります。

アップデート:

コメントを読んだ後の更新は次のとおりです。質問では、Web サイトの訪問者に API キーを提供することを説明していないためです (その場合、何をしても失敗します)。

juanpaco のコメントでは、何をすべきか (そして、とにかく何をしていると私が最初に想定したか) を説明していますが、もう少し詳しく説明しようと思います。

最も重要なことは、Web フォームで API キーを使用しないことです。API キーは、顧客サーバーと API サーバー間の通信でのみ使用されます。

簡単な説明を次に示します。

  1. 顧客にキーと、サーバーにインストールするソフトウェア/モジュール/ライブラリを提供します。
  2. 訪問者が顧客の Web サイトにアクセスすると、API キーを含まず、顧客のサーバーとのみ通信できるモジュールによって生成された HTML が表示されます (機密情報やユーザー アカウントが含まれる場合は HTTPS を使用します)。
  3. 顧客のサーバー上のモジュールが訪問者からのリクエストを受け取ります。
  4. モジュールは、API キー (HTTPS を使用) を使用してサーバーに接続します。
  5. API サーバーが顧客のサーバーに応答します。
  6. 顧客のサーバーが訪問者に応答します。

API キーが平文で送信されることはなく、ウェブサイトの訪問者に渡されることもありません。

これは API キーを使用する唯一の合理的な方法です。最初にあなたの質問を読んだ後、あなたのサーバーと顧客のサーバーの間で API キーを送信する際の安全性について心配していると思いました。

顧客が自分の Web サイトのすべての訪問者にキーを渡す場合、それらの訪問者は、あなたがどんなに頑張ってもキーを知ることができます。訪問者に API キーを与え、それを使用可能にするが読み取れないようにすることは不可能です。難しいことではありません -不可能です。使用するプロトコル、暗号化などに関係なく。

(この古い回答に注意を向けてくれたjuanpacoに感謝します。)

于 2011-03-11T14:13:26.260 に答える