Як безпечно використовувати ключі API Google


78

Отже, я використовую API Карт Google у своєму першому проекті, який я роблю ... Тож так, я новачок, і мені шкода, якщо це є основним чи очевидним, але мені не вдалося знайти чіткої відповіді чи напрямку. Нижче наведена документація, яку я знайшов від Google про безпечне використання ключа API.


Кращі практики безпечного використання ключів API

Коли ви використовуєте ключі API у своїх програмах, подбайте про те, щоб захистити їх. Публічне видання ваших облікових даних може призвести до компрометації вашого облікового запису, що може призвести до несподіваних платежів за ваш рахунок. Щоб захистити ключі API, дотримуйтесь наведених нижче найкращих практик:

Не вбудовуйте ключі API безпосередньо в код: ключі API, вбудовані в код, можуть випадково бути відкритими для загального користування - наприклад, якщо ви забудете видалити ключі з коду, яким ви ділитесь. Замість того, щоб вбудовувати ключі API у свої програми, зберігайте їх у змінних середовища або у файлах поза деревом джерела програми. Не зберігайте ключі API у файлах у дереві джерела програми: якщо ви зберігаєте ключі API у файлах, зберігайте файли поза деревом джерела програми, щоб гарантувати, що ваші ключі не потраплять у систему контролю вихідного коду. Це особливо важливо, якщо ви використовуєте загальнодоступну систему управління вихідним кодом, таку як GitHub. Обмежте, щоб ваші ключі API використовувались лише IP-адресами, URL-адресами перенаправлення та мобільними додатками, які вони потребують: Обмежуючи IP-адреси, URL-адреси переходу і мобільні програми, які можуть використовувати кожен ключ, ви можете зменшити вплив компрометованого ключа API. Ви можете вказати хости та програми, які можуть використовувати кожен ключ із консолі, відкривши сторінку Повноваження, а потім створивши новий ключ API із потрібними налаштуваннями або відредагувавши налаштування ключа API. Видаліть непотрібні ключі API: щоб мінімізувати ризик атаки, видаліть усі потрібні вам ключі API. Періодично відновлюйте свої ключі API: Ви можете відновлювати ключі API на сторінці облікових даних консолі Cloud Platform, натискаючи Відновити ключ для кожного ключа. Потім оновіть свої програми, щоб використовувати новостворені ключі. Ваші старі ключі працюватимуть протягом 24 годин після того, як ви створите запасні ключі. Перегляньте свій код перед публічним випуском:


Зараз моя проблема в тому, що я не можу зрозуміти, як включити Карту Google на свій веб-сайт, не ввівши її безпосередньо в код. Зараз мій API знаходиться в моєму index.html так:

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

Але знову ж таки це прямо в моєму коді, щоб світ побачив, який я вважаю неправильним шляхом.


Відповіді:


71

Для API Google Maps Javascript v3 ключі мають бути загальнодоступними на вашій сторінці. Відповідний текст:

Обмежте, щоб ваші ключі API використовувались лише IP-адресами, URL-адресами перенаправлення та мобільними додатками, які вони потребують

Перейдіть до консолі Google API і створіть ключ, обмежуючи його URL-адресами, якими ви володієте (або хочете розмістити карти), щоб запобігти «крадіжці» квоти.


21
обмеження його до URL-адреси не є безпечним, оскільки http-реферал може бути легко підроблений
Danny Ocean

@Danny Ocean, Якщо обмеження його URL-адресою не є безпечним (оскільки http-реферал може бути підроблений або хтось може запустити ваш api-ключ на своєму вікні з файлом hosts, який вказує вашу URL-адресу на їх сервер localhost), то що найкраще для захисту Ключі API Google, такі як API Google Maps Javascript, які надають ключ API клієнту / кінцевому користувачеві (замість прихованого ключа API API на стороні сервера)? Я не думаю, що я бачив інші способи обмеження ключа в Google Dev Console (за IP-адресою, але це не буде працювати для API-ключів на стороні клієнта, оскільки кінцеві користувачі мають різні ips для загальнодоступного веб-сайту).
armyofda12mnkeys

1
@ armyofda12mnkeys, коли я досліджував цю тему, єдиним безпечним способом зробити це (під "безпечним" я маю на увазі неможливість викрасти ключ API) був би зворотний проксі-сервер. На жаль, при використанні google JS SDK це насправді не спрацювало б. Ви зможете отримати SDK, не відкриваючи ключ API, але як тільки SDK буде завантажено на клієнт, він буде робити запити за допомогою вашого ключа API, що можна легко спостерігати, наприклад, за допомогою інструментів розробника браузера. Однак, якщо ви будете використовувати REST API замість SDK, ви можете проксі-сервер цих запитів, не відкриваючи ключ API. Не впевнений, що Google надає відповідний REST API.
Danny Ocean

18

Стаття найкращих практик використання API-ключів, на яку ви посилаєтесь, містить лише загальні вказівки щодо використання ключів API, а з деякими API-інтерфейсами для кінцевих користувачів, такими як API Google Maps JavaScript, ви не зможете уникнути відкриття ключа API кінцевому користувачеві.

Тому в загальнодоступному додатку API API для Карт настійно рекомендується додати обмеження перенаправлення до будь-якого ключа, що використовується у виробничій системі, особливо до загальнодоступних, і дозволяти лише домен, хост або навіть повний URL-адресу вашого додатка.

Коли ви створюєте свій ключ у консолі Google API і вибираєте налаштовані облікові дані для API Maps Maps, майстер вкаже вам, як захистити ключ, і запропонує URL-адреси, які ви хочете авторизувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.