Какие шаги следует предпринять для защиты моего ключа Google Maps API?


Я получил ключ 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>

Я ценю, что поле referrer в запросах должно соответствовать моему домену, безопасно ли делать мой ключ видимым в тегах скрипта и тому подобное? Или есть какие-то другие шаги я должен предпринять?

5 59

5 ответов:

учитывая, что ключ должен быть включен в <script> теги HTML-страниц, чтобы загрузить JS файлы/данные с серверов Google, вы ничего не можете сделать :

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

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

Так :

  • вы ничего не можете сделать ; вот как это работает
  • и я бы сказал, что вам не о чем беспокоиться.

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

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

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

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

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

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

Я не понимаю, почему вы беспокоитесь. Разве ключ не действителен только из вашего домена? IIRC, единственная информация, закодированная в нем, - это ваше доменное имя, помимо любой информации, которую Google может добавить, например, время ее создания.

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