2011-12-20 8 views
21

Remember the MilkウェブAPIを使用してChrome拡張機能を構築しています。このAPIでメソッドを呼び出すには、APIキーと「共有秘密」キーを使用してリクエストに署名する必要があります。Chrome拡張機能でウェブサイトのAPIキーを保護する

私の懸念は、公開されている拡張機能にそれらを含めると、拡張機能を開いてこれらの値を引き出すことができるということです。これは、ユーザーのセキュリティの上昇をもたらすかもしれないし、そうでないかもしれないが、彼は確かに私のAPIキーを使用/乱用し、おそらくそれを取り消すことができる。

これは私が気にするべきことですか?公開されたJavaScriptアプリケーションでこの種の情報を保護するためのベストプラクティスはありますか?

答えて

13

最終的にブラウザで実行されているJSアプリケーション内に何かを本当に隠すことはできません。コードを難読化したり縮小したりすることができます。これにより、一般ユーザーは気にしないようになりますが、結局は平文の秘密を得ることが常に可能になります。

本当にこれが起こらないようにする必要がある場合は、1つのオプションで、内線番号からアクセスできるサーバにコールを渡すことができます。サーバーは署名に必要なパラメータを追加し、関連するAPIにコールを転送し、APIの応答をユーザーに返すことができます。もちろん、帯域幅/稼働時間の制約が加わります。

+0

これはこの問題の最適な解決策になるのではないかと心配です。無料でシンプルなプラグインをサポートするWebサービスを作成することは間違いありません。コンパイルされたネイティブのアプリケーションのためのさらに別の勝利... –

+1

Yup。この理由から、私たちは基本的にJSベースの認証をAPIで禁止しています。もちろん、誰かがあなたのWebサービスへのリクエストを偽造することはまだ可能です...! – Graham

+5

@JoshEarlコンパイルされたネイティブアプリにもAPIキーがあり、チャールズ/フィドラーなどのSSLスニファを使用してそれらを抽出することは可能です。ブラウザJSはそれをより簡単にします。 – mikemaccana

関連する問題