Код-ревью Middle Сборка и публикация обновлено
Код-ревью: конфигурация сборки
Вопрос
Фрагмент конфигурации приложения. Найдите проблемы.
class Config {
static const apiUrl = 'https://api.example.com';
static const paymentSecret = 'sk_live_51H...';
static const isDebug = true;
}
void main() {
if (Config.isDebug) {
debugPrint('секрет: ${Config.paymentSecret}');
}
runApp(const App());
}
Коротко
Окружения задаются при сборке, флаги режима берутся из kDebugMode, а секреты в клиент не попадают вовсе. Любая строка в приложении доступна злоумышленнику.
Что должен найти ревьюер
- Стильстрока 2Адрес API зашит в код: dev и prod не развести без правки. Передавать через
String.fromEnvironmentи--dart-define. - Безопасностьстрока 3Секретный ключ платёжного провайдера в клиенте: его извлекут из бинарника. Операции с ним должны выполняться на сервере.
- Ошибкастрока 4Флаг отладки константой
trueуйдёт в релиз. ИспользоватьkDebugModeилиkReleaseMode. - Безопасностьстрока 9Печать секрета в лог: логи попадают в отчёты и на устройства тестировщиков.
Разбор
Окружения задаются при сборке, флаги режима берутся из kDebugMode, а секреты в клиент не попадают вовсе. Любая строка в приложении доступна злоумышленнику.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.