Які кроки я повинен зробити, щоб захистити свій ключ API Google Maps?


96

Я отримав ключ 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

@Tim: не впевнений; Я здогадуюсь про сам код JS, якщо перевіряю доменне ім'я сайту, що відображає карту, і здається нормальним, якщо він якось порівняв його з інформацією, включеною в ключ - все-таки, я зробив не намагайся. ;;; @Brabster: :-)
Паскаль МАРТІН

2
Наприклад, важливо, чи ми хочемо захистити пропускну здатність використання нашого ключа API. Перевірте моє рішення.
Іфан Ікбал

3
а що, якщо я візьму ключ api для використання у власному додатку (windows / ios / android)? я можу імітувати реферал і використовувати цей ключ для власних цілей за вашу ціну!
Локі

21

На консолі Google API є налаштування, які можуть захистити використання пропускної здатності вашого API від використання іншим доменом / користувачем. Ви можете обмежити та захистити це, використовуючи реферал на консолі API. Ключ API буде відхиляти запити без рефералів, які відповідають вашим обмеженням.

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


3
а як щодо мобільних користувачів?
Мухаммед Умер,

Щоб додати трохи, детальну інформацію можна знайти тут developers.google.com/maps/…
SIslam

15

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

Кроки, які ви можете зробити, щоб уникнути потенційних зловживань, були опубліковані Google тут:

Посібник з найкращих практик щодо безпечного використання API: https://support.google.com/cloud/answer/6310037?hl=uk

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


16
Я також вважаю, що ця відповідь не стосується питання. Для API Maps потрібен javascript на стороні браузера, який завжди читає кожен, хто завантажує сторінку.
Девід ван Брінк

-1

Для захисту та управління ключем слід використовувати зворотний кінець / сторону сервера. У моєму випадку я використовував сторону сервера Django f / w, яка може обслуговувати виклик ajax, щоб отримати ключ із сценарію сервера / db, а потім передати його на google api.


4
Якщо ваш ключ API коли-небудь потрапляє до браузера, його може отримати третя сторона.
Moose on the Loose
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.