храните закрытый ключ api в flutter

# #firebase #flutter #firebase-realtime-database #google-cloud-functions

Вопрос:

Я использую firebase и свой внутренний API для получения данных для своего приложения.

api требует ключа GCP от доступа. Срок действия этого ключа истекает каждые 90 дней. Таким образом, я не могу хранить ключ в клиенте/телефоне.

Нужны некоторые идеи о том, где я могу хранить ключ.. Я попробовал удаленную конфигурацию Firebase, и она работает, но в документации Firebase сказано, что конфиденциальные данные не должны использоваться .

Создание внутренней службы, которая возвращает ключи, не будет безопасным, так как любой может позвонить в эту службу,,

Нужно какое-то предложение. Является ли Firestore/база данных в реальном времени опцией. Приложение будет считывать только данные. Однако, когда данные изменяются(новые ключи), приложение должно получать последнюю версию.

Спасибо за любое предложение

Ответ №1:

Хотя распространение закрытого ключа API для приложения во время выполнения с помощью такого механизма, как Удаленная конфигурация или облачная база данных, может снизить риск его перехвата, этого недостаточно, чтобы удержать достаточно мотивированного злоумышленника. Вот почему документация по удаленной конфигурации рекомендует этого не делать, и то же самое относится к другим механизмам распространения (таким как упомянутые вами базы данных).

Если это закрытый ключ API, вы не должны использовать его в коде на стороне клиента, точка. Это действительно единственное решение. Когда вы используете его в коде на стороне клиента, злоумышленник может получить к нему доступ, а затем злоупотребить внутренней службой, защищенной закрытым ключом API.

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

Комментарии:

1. Спасибо, но моему мобильному приложению необходимо взаимодействовать с API на сервере. Для этого нужен ключ. Этот ключ меняется каждые 90 дней. Как клиент может общаться с API.. Мне нужен ключ, и я должен его где-то хранить.. что вы рекомендуете?

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