web-dev-qa-db-ja.com

クライアント側のJavaScriptでAPIキーを非表示にする方法

現在、私はUSPS Price Calculator APIにリクエストを行うクライアント側のjavascriptアプリを書いています。このリクエストを行うには、リクエストのxmlでAPIユーザーIDを提供する必要があります。タグは次のようになります:<RateV4Request USERID="ThisIsWhereMyUserIdGoes">。私の質問はこれです:クライアント側のファイルを見るユーザーからは隠しながら、ユーザーIDをJavaScriptに提供する方法はありますか?現在、私が持っている唯一の解決策は、ユーザーIDを持つPHPファイルをサーバーに作成し、次にクライアントでAJAXリクエストを使用することです。それをグローバル変数に保存するためのサイドJavaScript。次のようになります。

var userID;
$.get("/secrets.php", function( data ) { 
       userID = data;
});

これは、APIユーザーIDがアプリのユーザーに表示されないようにする適切な方法ですか?他に何ができますか?

10
Joshua E

つまり、いいえ、クライアント側アプリでAPIキーを保護することはできません。

この記事はもう少し詳しく説明します

2つのオプション

  • サーバー側でAPI呼び出しを行い、そこからクライアントに情報を提供する
  • クライアントが独自のAPIキーを使用する必要がある
11
mulquin

PHPソリューションを使用している場合でも、userIdを非表示にすることはできません。consle.log(userId);にアクセスして、ブラウザコンソールで簡単に印刷できます。クライアント側は脆弱であり、簡単にデコードできます。APIキーを難読化した場合でも、クライアント側からデコードできます。

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

5
shivgre