Выбор ответа Middle Сборка и публикация обновлено

Flutter: секреты в dart-define

Вопрос

Можно ли безопасно хранить секретный ключ платёжного API в --dart-define?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нет: значение вкомпилировано в бинарник и извлекается. --dart-define просто подставляет константы при компиляции, они лежат в приложении как строки.

Варианты ответа

  1. Нет: значение вкомпилировано в бинарник и извлекаетсяправильный ответ
  2. Да: --dart-define шифрует значения при сборке, их нельзя прочитать
  3. Да, если дополнительно включить --obfuscate при сборке релиза
  4. Да, если читать значение только через String.fromEnvironment

Разбор

--dart-define просто подставляет константы при компиляции, они лежат в приложении как строки. Обфускация переименовывает символы, но не шифрует строковые литералы. Любой ключ в клиенте считается публичным. Секретные операции (создание платежа, вызовы с приватным ключом) выполняет сервер, а приложение получает от него временный токен.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.