キーを公開せずにAJAXからAPIへ
-
26-10-2019 - |
質問
私が尋ねようとしていることの答えはノーだと確信していますが、誰かが私に別のアイデアを与えることができるので、とにかく尋ねています。
API呼び出しを介して、サードパーティのWebサービスをフォームから取得するコントロールパネルを開発しています。ブラウザの結果をMillisecondsで返すAJAXで電話をかけることができましたが、このサービスのAPIキーを公開することになります。これはアクセスが制限されたイントラネットですが、従業員は嗅ぎ回り、サファリのアクティビティウィンドウのみを見るだけでプライベートAPIキーを取得できます。従業員は信頼できますが、私は信頼するだけで開発のセキュリティを危険にさらしたくありません。
私が今やっているのは、PHPをカールコールで呼び出すことですが、PHP自体ではなく、約2〜3秒かかります。
プライベートキーを公開せずにブラウザにAPIに直接リクエストを実行させる方法はありますか?定義上、それは不可能だと思いますが、私はシナリオを共有しているので、誰かがより良いアイデアを持っているかもしれません(2番目までに情報が取得されたため、キャッシュを避けようとしています)
問題ではない私はこれに関連する疑いがあります:Mac OSターミナルまたはローカルApacheでCurlを介してAPI呼び出しを行うと、結果を取得するのに毎回12秒かかりますが、まったく同じコンピューターと接続のブラウザーがかかりますミリ秒単位で取得します。 Curlが内部的にどのように機能するかについてはあまり慣れていませんが、Curlは遅いメカニズムであるか、Macでうまく機能していません。
ありがとう
解決
いいえ、JavaScriptコードはクライアントのマシンに送信されて実行されるため、APIキーを何らかの方法で公開しない方法はありません。知識豊富なユーザーは、Header Viewer/Packet Snifferを使用して、とにかくAPIリクエストからプレーンテキストキーを抽出することができるため、暗号化/観察は無意味です。
ユーザーにキーを公開しない唯一の方法は、ユーザーにそれを手に入れることができないことです。つまり、リクエストをプロキシすることを意味します。
他のヒント
いいえ、ブラウザがサービスを要求している場合、ユーザーは常にキーを嗅ぐことができます。したがって、PHPを代理として使用することは良い解決策です。