Статьи

Как сохранить учетные данные REST API в безопасности

Если вы создаете мобильные приложения, то вы подключаетесь к некоторому REST API. Например, если вы хотите преобразовать адрес в информацию о широте / долготе, отображаемую на карте, вы можете использовать API геокодирования Google :

1
https://maps.googleapis.com/maps/api/geocode/json?address=San Francisco,CA&key=AIzaSyDvFMYGjeR02RH

Если вы вызываете API из клиента, то ключ API также должен присутствовать на клиенте. Но это тоже проблема. Очень легко посмотреть на источник приложения в браузере и получить доступ к ключу API. Если кто-то имеет доступ к вашему ключу API, он может отправлять запросы от вашего имени (без вашего ведома) и использовать вашу квоту запросов. Даже если вы создаете гибридное приложение, это все та же проблема. Гибридное приложение представляет собой HTML / JavaScript внутри встроенной оболочки, его можно загрузить, распаковать и получить доступ к ключам API или любой конфиденциальной информации, хранящейся в приложении. Даже нативные приложения не застрахованы от этого. Например, приложение Android — это просто приложение Java, и приложение Java можно декомпилировать для просмотра исходного кода. Следующее изображение показывает, как получить доступ к ключу API в браузере:

Просмотр источника приложения в браузере

Просмотр источника приложения в браузере

Хорошее решение — никогда не выставлять ключ API (или любые другие конфиденциальные данные) на клиенте. Как ты это делаешь? Вы храните ключ API и любую другую конфиденциальную информацию на сервере.

Appery.io Безопасный прокси

Appery.io Безопасный прокси

Appery.io Secure Proxy (часть Backend Services) позволяет разработчикам приложений хранить конфиденциальные данные приложения на сервере. Ваши ключи API или любые другие данные никогда не предоставляются клиенту. Посмотрите это 5-минутное видео о том, как использовать Secure Proxy:

Перед использованием Secure Proxy вам необходимо сохранить данные на сервере. Для хранения данных вы собираетесь использовать базу данных Appery.io. Это так же просто, как создать коллекцию из двух столбцов. Первый столбец является именем значения, второй столбец является фактическим значением. Вот как выглядит база данных при хранении ключа API для API геокодирования Google:

Сохранение ключа API в базе данных

Сохранение ключа API в базе данных

Поскольку этот ключ хранится на сервере, никто (кроме вас) не имеет к нему доступа. Вы также можете хранить другие данные, такие как URL-адреса, токены или что-либо еще, что не должно отображаться на клиенте.

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

Безопасный прокси, связанный с базой данных

Безопасный прокси, связанный с базой данных

Вы даете прокси имя и затем связываете его с базой данных, в которой хранятся ваши данные. Приведенный выше прокси-сервер связан с базой данных Secrets_db , коллекцией учетных данных и столбцами secretName , secretValue .

Последний шаг — связать службу API REST с прокси. В редакторе сервиса вы выбираете созданный безопасный прокси:

Служба REST API с использованием защищенного прокси

Служба REST API с использованием защищенного прокси

затем на вкладке Запрос вы ссылаетесь на ключ API, хранящийся в базе данных (имя хранится в столбце secretName):

Подстановка параметров запроса произойдет на сервере

Подстановка параметров запроса произойдет на сервере

вот и все.

Когда служба API вызывается, вызов будет проходить через защищенный прокси (сервер), где будет заменен ключ API:

Ключ API не выставляется на клиенте

Ключ API не выставляется на клиенте

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

Безопасность на основе URL

Безопасность на основе URL

Прокси-сервер будет принимать запросы только от URL-адресов страниц, указанных в таблице.

Другой вариант сохранения конфиденциальности ключей API — это вызов API с сервера с использованием кода сервера. Я расскажу об этом в другом посте.

Настроить использование Appery.io Secure Proxy очень просто. Он обеспечивает очень важную функцию, позволяя хранить конфиденциальные и конфиденциальные данные на сервере, никогда не подвергая их воздействию на клиенте и добавляя дополнительный уровень безопасности в ваше приложение.