Google Maps APIキーを保護するには、どのような手順を踏む必要がありますか?


96

ドメインのGoogle Maps APIキーを取得しました。

キーを取得したときに提供された例は、リクエストパラメータに埋め込まれたキーを示しています。次に例を示します。

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=my-key" type="text/javascript"></script>

リクエストのリファラーフィールドがドメインと一致している必要があることを認めています。キーをスクリプトタグなどに表示しても安全ですか?それとも私が取るべき他のステップはありますか?

回答:


92

キーを<script>HTMLページのタグに含める必要があることを考慮して、GoogleのサーバーからJSファイル/データをロードするには、何もできません。

  • あなたはそれをあなたのHTMLファイルに入れなければなりません
  • 誰もがそれらを見ることができます。

それでも、それは本当に問題ではありません。誰かがあなたのドメインとは別のドメインでこのキーを使用しようとすると、Javascriptアラートが表示されます。

そう :

  • あなたにできることは何もありません。これが機能する方法です
  • そして、あなたが心配すべきことはあまりない、と私は言うでしょう。

5
自分のサイトで、キーを使用して「実際の」ファイルをフェッチするプロキシを使用できると思います。まったく意味がありませんが、可能だと思います。
Tim Sylvester

1
何かを見逃した場合に備えて、チェックする価値があると考えました。答えた人に乾杯。
ブラブスター2009

@ティム:わからない 地図を表示するサイトのドメイン名を破壊する場合は、JSコード自体を推測しているのですが、何らかの方法で、キーに含まれている情報と比較したのは普通のように見えます-それでも、私はしましたしないでください。;;; @ブラブスター::-)
Pascal MARTIN

2
たとえば、APIキーの帯域幅使用を保護する必要があるかどうかは重要です。私の解決策を確認してください。
Ifan Iqbal

3
自分のアプリ(windows / ios / android)で使用するためにAPIキーを取得した場合はどうなりますか?リファラーをシミュレートし、このキーを自分の目的であなたの費用で使用できます!
loki

21

Google APIコンソールには、API帯域幅の使用を別のドメイン/ユーザーが使用しないように保護できる設定があります。APIコンソールでリファラーを使用することにより、それを制限および保護できます。APIキーは、制限に一致する参照元がないリクエストを拒否します。

これは、Googleが2つのドメインを操作する場合にのみ使用できるAPIキーのGoogleからのスクリーンショットです。 ここに画像の説明を入力してください


3
モバイルユーザーはどうですか?
ムハンマドウメール

ビットを追加するには、詳細はここですることができdevelopers.google.com/maps/...
SIslam

15

この質問は数年前のものですが、非常に良い質問です。私が理解しているように、APIキーを公開すると、たとえそれらがドメインに一致していても、悪用につながる可能性があります。これについて詳しく説明しているセキュリティスタック交換に関する投稿があります。

不正行為の可能性を回避するために実行できる手順は、Googleによって次の場所に公開されています。

APIを安全に使用するためのベストプラクティスガイド: https //support.google.com/cloud/answer/6310037?hl=ja

私はそれをすべて搭載することをお勧めしますが、ブラブスターによって投稿された特定の例を扱うアプローチがあり、それは環境変数にキーを格納することです。この方法で行う必要があるのは、プロジェクト内に格納されているサーバー側変数をキーで置き換えることだけです。ただし、キーを格納するファイルを公開リポジトリにコミットしないでください。


16
また、この回答は問題を解決するものではないと感じています。maps APIにはブラウザ側のjavascriptが必要です。これは、ページをフェッチするすべての人が常に読み取ることができます。
david van brink

-1

キーを保護および処理するには、バックエンド/サーバー側を使用する必要があります。私の場合、ajax呼び出しを提供してサーバースクリプト/ dbからキーを取得し、それをgoogle apiに渡すことができるDjango f / wサーバー側を使用しました。


4
APIキーがブラウザに到達した場合、サードパーティが取得できます。
ムース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.