web-dev-qa-db-ja.com

JavaScriptの使用時にAPIキーを保護するにはどうすればよいですか?

それで、私は自分自身の使用のための小さなアプリケーションと、おそらくGit上のオープンソースプロジェクトを開発しています。私はEnvato MarketplaceのAPIを使用しています。ご存じのとおり、キーを必要としない操作もいくつかありますが、同時に必要な操作もあります。

最初にPHPでEnvato APIのNice APIラッパーを作成しましたが、次にJavaScriptを少し試してみることにしたので、同じラッパーをJavaScriptで開発しています。これまでのところ、公開操作には問題はありませんが、APIキーを使用する必要があります。

私の質問は、JavaScriptでAPIキーを保護する方法があるかどうかです。それをプレーンテキストでそのまま置くことはできません。コードを見る他の人が使用できるからです。それで、APIが秘密のままである実装があるでしょうか?たぶん、XHRでJSONテキストファイルからそれを取得しますか?

25
Roland

短い答え:いいえ

キーを難読化するために何をしても、クライアントで使用できるようにするには、キーを送信する必要があるため、fxを使用してキーを抽出することができます。 Firebug。

キーを秘密に保つための素晴らしい魔法の方法を考案したとしても、ある時点で実際のAPIリクエストを行う必要があり、ブラウザから送信する必要があるため、攻撃者はキーを読み取ることができます。 Firebugsネットタブからのプレーンテキスト。

正しいことは、キーを必要とするAPI呼び出しの周りにPHPラッパーを作成し、Javascriptからそのラッパーを呼び出すことです。

20
AHM

私の現在の解決策は、Rustで小さなラッパーを記述し、それを/ cgi-binにスローして、それを呼び出すことです。これにより、api-key、api creds、およびセッションデータがクライアントから分離されます。

1
deRost