Какие шаги нужно предпринять, чтобы защитить свой ключ API Карт Google?

98

Я получил ключ API Карт Google для своего домена.

Примеры, приведенные при получении ключа, показывают ключ, встроенный в параметры запроса, например:

<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-страниц, для загрузки файлов / данных JS с серверов Google вы ничего не можете сделать:

  • вы должны поместить его в свои HTML-файлы
  • каждый может взглянуть на них.

Тем не менее, на самом деле это не имеет значения: если кто-то попытается использовать этот ключ в другом домене, кроме вашего, он получит предупреждение Javascript, что неприятно для других пользователей.

Так :

  • Вы ничего не можете сделать; так это работает
  • И я бы сказал, что вам не о чем беспокоиться.
Паскаль МАРТИН
источник
5
Я думаю, вы могли бы использовать прокси на своем собственном сайте, который использовал бы ключ для получения «настоящего» файла. Совершенно бессмысленно, да, но я думаю, что это возможно.
Тим Сильвестр,
1
Подумал, что стоит проверить на случай, если я что-то пропустил. Приветствую тех, кто ответил.
brabster 01
@ Тим: не уверен; Я предполагаю, что сам код JS выбирает доменное имя сайта, который отображает карту, и казалось бы нормальным, что он каким-то образом сравнивал его с информацией, включенной в ключ - тем не менее, я сделал не пробовать. ;;; @Brabster: :-)
Паскаль МАРТИН
2
Это важно, например, если мы хотим защитить полосу пропускания от использования нашего ключа API. Проверьте мое решение.
Ифан Икбал
3
а что, если я возьму ключ api для использования в моем собственном приложении (windows / ios / android)? Я могу смоделировать реферера и использовать этот ключ в своих целях за ваш счет!
loki
22

В консоли Google API есть настройка, которая может защитить вашу полосу пропускания API от использования другим доменом / пользователем. Вы можете ограничить и защитить это, используя реферер в консоли API. Ключ API будет отклонять запросы без рефереров, которые соответствуют вашим ограничениям.

Вот скриншот из Google для ключа API, который может использоваться только Google для двух своих доменов. введите описание изображения здесь

Ифан Икбал
источник
3
как насчет мобильных пользователей?
Мухаммад Умер
Чтобы добавить немного, подробности можно найти здесь developers.google.com/maps/…
SIslam
15

Хотя этому вопросу несколько лет, он очень хороший. Насколько я понимаю, раскрытие ключей API, даже если они совпадают с доменом, все равно может привести к злоупотреблениям. Здесь есть сообщение о Security Stack Exchange, в котором это более подробно рассматривается.

Действия, которые вы можете предпринять, чтобы избежать возможных злоупотреблений, опубликованы Google здесь:

Руководство по передовой практике для безопасного использования API: https://support.google.com/cloud/answer/6310037?hl=en

Хотя я бы рекомендовал взять все это на вооружение, есть подход, который будет иметь дело с конкретным примером, опубликованным Brabster, и заключается в том, чтобы сохранить ключ в переменной среды . Таким образом, все, что вам нужно сделать, это заменить ключ серверной переменной, которая хранится в вашем проекте. Однако убедитесь, что не зафиксировали файл, в котором хранится ключ, в общедоступном репозитории.

rjbultitude
источник
16
Я также чувствую, что этот ответ не отвечает на вопрос. API карт требует наличия javascript на стороне браузера, который всегда доступен для чтения всем, кто просматривает страницу.
Дэвид ван
-1

Вы должны использовать серверную часть / серверную часть для защиты и обработки ключа. В моем случае я использовал серверную часть Django f / w, которая может обслуживать вызов ajax для получения ключа из серверного скрипта / db, а затем передавать его в google api.

SKS
источник
5
Если ваш ключ API когда-либо попадет в браузер, его может получить третья сторона.
Moose on the Loose