1. Запрещайте скриншоты на чувствительных экранах
Некоторые чувствительные данные не должны попадать в скриншоты:
@override
void initState() {
super.initState();
if (Platform.isAndroid) {
FlutterWindowManager.addFlags(
FlutterWindowManager.FLAG_SECURE,
);
}
}
2. Используйте биометрию
Биометрия нужна не только для логина.
final auth = LocalAuthentication();
await auth.authenticate(
localizedReason: "Verify to access your bank account",
options: const AuthenticationOptions(
biometricOnly: true,
),
);
Подходит для различных сценариев:
- входа
- платежей
- доступа к профилю
3. Автоматический логаут и контроль сессии
class SessionManager {
Timer? _timer;
void start(void Function() onExpire) {
_timer?.cancel();
_timer = Timer(
const Duration(minutes: 5),
onExpire,
);
}
void refresh() {
_timer?.cancel();
}
}
Выход при:
- уходе в фон
- бездействии
- истечении токена
4. Root / Jailbreak — блокировать
final isRooted = await RootChecker.isRooted();
if (isRooted) {
exit(0);
}
Не забывайте про использование в нескольких местах и рандомных триггерах, чтобы труднее было подвергнуть приложение реверс-инжинирингу.
5. Код и логи в продакшене
flutter build apk --obfuscate --split-debug-info=./symbols
flutter build ios --obfuscate
if (kDebugMode) {
print("Token: $token");
}
Надеюсь, советы были полезны и помогут избежать типовых ошибок при разработке приложений на Flutter. Если тема откликнулась — пишите в комментарии!
