Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Итак:

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

Вы обязательно должны защитить эти ключи.

Хотя содержимое сценариев доступно для чтения всем, кто захочет, доступ ко многим картографическим сервисам Google платный и доступен только тому, кто использует этот токен.

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

Google рекомендует следующее для ключей API карт, и это относится ко ВСЕМ ключам API: https://developers.google.com/maps/api-key-best-practices.

В итоге:

  1. Используйте прокси-сервис, чтобы скрыть их.

  2. Не помещайте их в свой код или в систему контроля версий.

  3. Создайте безопасный (зашифрованный) сервис хранилища параметров для ваших ключей.

  4. Если безопасность важна для вас, рассмотрите стратегию ротации ключей.

Там многое другое в зависимости от вашей реализации и размера вашей организации и насколько важна безопасность для вас.

Ответ 7

Вы можете сделать это с помощью PHP

1. Сохраните ключ в файле с именем key.ini как googlemaps_api_key=xxxxxxxxxxxxxxxxx

2. Сохраните файл в папке some_folder вне корневой папки вашего сайта, например, в home/my_website/some_folder/key.ini, где корнем моего сайта будет home/my_website/public_html/

3. Вызвать последний скрипт карт Google на странице .php (не на странице .html) и добавить
<?php $config['googlemaps_api_key']?>
вместо фактического ключа API, как в
<script src="https://maps.googleapis.com/maps/api/js?key=<?php $config['googlemaps_api_key']?>&callback=initMap" async defer></script>

Теперь веб-страница не будет отображать фактический ключ для общественности. Результат будет

<script src="https://maps.googleapis.com/maps/api/js?key=&callback=initMap" async="" defer=""></script>

Вы также можете CHMOD some_folder и key.ini для дальнейшего ограничения доступа.

Обратитесь сюда для безопасного хранения любых учетных данных
https://security.stackexchange.com/info/152590/how-to-securely-connect-to-a-database-with-php