1.5Kпросмотров
49.7%от подписчиков
26 декабря 2025 г.
📷 ФотоScore: 1.6K
Hola, Amigos! Продолжаем разговор о безопасности приложений на Flutter. Даже при корректной аутентификации приложение остается уязвимым, если сетевой слой и серверная валидация реализованы неправильно. В этой части поговорим о защите сетевых запросов, доверии к данным и проверке OTP. 1. SSL pinning — обязательное требование Без pinning HTTPS не спасает от атаки MITM (Man In The Middle), когда злоумышленники перехватывают трафик между приложением и сервером, а потом читают или подменяют запросы через прокси или wi-fi: final context = SecurityContext(withTrustedRoots: false);
context.setTrustedCertificatesBytes(certBytes); final httpClient = HttpClient(context: context); final dio = Dio() ..httpClientAdapter = IOHttpClientAdapter( createHttpClient: () => httpClient, ); Это блокирует: - proxy
- fake Wi-Fi
- подмену сертификатов 2. OTP всегда проверяется на сервере Проверка OTP на клиенте — критическая уязвимость: if (enteredOtp == "123456") success(); Только сервер: await api.verifyOtp( mobile: mobile, otp: enteredOtp,
); 3. Клиентская валидация — не финальная. Данные всегда проверяются на сервере: bool isValidAmount(String value) { final amount = double.tryParse(value); return amount != null && amount > 0 && amount < 100000;
} Эти меры закрывают большую часть рисков, но сами по себе они не решают все. Даже при защищенном трафике и корректной логике на бэке приложение остается уязвимым на уровне устройства и интерфейса. В следующей части разберем защиту UI, работу с сессиями и ограничения на уровне устройства.