2012-02-16 14 views
0

私は、私が尋ねようとしていることの答えはNOですが、誰かが私に別のアイデアを与えることができるので、とにかく頼んでいます。APIを公開することなくAjaxを公開

API呼び出しを介してサードパーティのWebサービスから情報を取得するコントロールパネルを開発しています。私はAJAXを呼び出してブラウザに結果をミリ秒単位で返すことができますが、私はこのサービスのAPIキーを公開しています。これはアクセスが制限されたイントラネットですが、従業員はSafariのアクティビティウィンドウだけを見ながらPrivate API Keyを盗み見て取得することができます。従業員は信頼できるものですが、私は信用するだけで自分の開発セキュリティを危険にさらしたくありません。

私が今やっていることは、CURL呼び出しで電話をかけるAJAXingですが、それには2,3秒かかります。つまり、PHP自体ではなく、サードパーティ製のサーバーへの共有ホスティングとバック。

ブラウザに秘密鍵を公開せずに直接APIに要求を行う方法はありますか?私は定義上それは不可能だと思うが、私はシナリオを共有しているので、誰かがより良いアイデアを持っていると思うかもしれない(私はキャッシュを避けるために情報を取得するので、2番目に情報を取得する)

私は疑問Mac OS TerminalまたはローカルApacheでCURLを使用してAPIコールを実行すると、結果を得るたびに毎回12秒かかるのですが、まったく同じコンピュータと接続のブラウザではミリ秒単位で取得されます。私はCURLが内部的にどのように動作するのかよく知らないが、CURLは遅いメカニズムであるか、Macでうまく動作しない。

おかげ

答えて

1

いいえ、javascriptコードがクライアントのマシンに送信されて実行されるため、APIキーを何らかの方法で公開しない方法はありません。知識のあるユーザーはヘッダービューア/パケットスニッファを使用して、APIリクエストから平文キーをとにかく抽出できるので、暗号化/難読化は意味がありません。

ユーザーにキーを公開しないようにする唯一の方法は、ユーザーがこれを保持できないようにすることです。つまり、要求をプロキシすることです。

1

いいえ、ブラウザがサービスにユーザーをrequestringさオールウェイズキーを盗聴することができます。だから、プロキシとしてPHPを使うのは良い解決策です。

関連する問題