Если вы создаете мобильные приложения, то вы подключаетесь к некоторому 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 Secure Proxy (часть Backend Services) позволяет разработчикам приложений хранить конфиденциальные данные приложения на сервере. Ваши ключи API или любые другие данные никогда не предоставляются клиенту. Посмотрите это 5-минутное видео о том, как использовать Secure Proxy:
Перед использованием Secure Proxy вам необходимо сохранить данные на сервере. Для хранения данных вы собираетесь использовать базу данных Appery.io. Это так же просто, как создать коллекцию из двух столбцов. Первый столбец является именем значения, второй столбец является фактическим значением. Вот как выглядит база данных при хранении ключа API для API геокодирования Google:
Поскольку этот ключ хранится на сервере, никто (кроме вас) не имеет к нему доступа. Вы также можете хранить другие данные, такие как URL-адреса, токены или что-либо еще, что не должно отображаться на клиенте.
Следующим шагом является настройка прокси, который будет использовать информацию, хранящуюся в базе данных. Этот шаг также очень прост, вот как это выглядит:
Вы даете прокси имя и затем связываете его с базой данных, в которой хранятся ваши данные. Приведенный выше прокси-сервер связан с базой данных Secrets_db , коллекцией учетных данных и столбцами secretName , secretValue .
Последний шаг — связать службу API REST с прокси. В редакторе сервиса вы выбираете созданный безопасный прокси:
затем на вкладке Запрос вы ссылаетесь на ключ API, хранящийся в базе данных (имя хранится в столбце secretName):
вот и все.
Когда служба API вызывается, вызов будет проходить через защищенный прокси (сервер), где будет заменен ключ API:
Для веб-приложений вы можете добавить дополнительный уровень безопасности, указав, с каких URL-адресов страниц прокси должен принимать запросы:
Прокси-сервер будет принимать запросы только от URL-адресов страниц, указанных в таблице.
Другой вариант сохранения конфиденциальности ключей API — это вызов API с сервера с использованием кода сервера. Я расскажу об этом в другом посте.
Настроить использование Appery.io Secure Proxy очень просто. Он обеспечивает очень важную функцию, позволяя хранить конфиденциальные и конфиденциальные данные на сервере, никогда не подвергая их воздействию на клиенте и добавляя дополнительный уровень безопасности в ваше приложение.
Ссылка: | Как сохранить учетные данные REST API в безопасности от нашего партнера по JCG Макса Каца в блоге Maxa . |