web-dev-qa-db-ja.com

クライアント側のJavaScriptを使用するときにAPIキーを秘密に保つ方法は?

たとえば、この Facebook プラグインを確認してください。

クライアント側では、APIキーがはっきりと見えます。別のユーザーがこのキーを取得して別のサイトでこの機能を使用するのを妨げているのは何ですか?

非常に素朴な実装は、リクエストの送信元のドメインをチェックすることだと思いましたが、このようなものは簡単に偽造できます。

同様の何かを作成する場合、認証プロセスを保護するにはどうすればよいですか?

この作業の多くをクライアント側にしたいのですが、何らかの形でサーバー認証が確実に必要になりますか?リンクやアドバイスをいただければ幸いです。

更新

同様 質問 私が便利だと思ったAPIキーについて。

47
Finglas

つまり、サーバー側の検証です。指定されたサイトに対して正しくないキーを使用すると、FB自体がエラーをスローします。 APIキーは(秘密キーとは対照的に)秘密である必要はありません。

12
Piskvor

私はこれを自分で行ったわけではありませんが、心配されている種類の攻撃がクロスサイトリクエストフォージェリ(CSRF)と呼ばれていることは知っています。 Wikipediaの記事 は、それを防ぐ方法についてのヒントを示しています。

3
GregL