Public Telegram Archive
Channels About
Cyprus_iT chat
@badcyprus · supergroup · filtered by Nick
Nick 2025-01-12 19:09 UTC
Andrey
Всем привет! Есть может в чате спецы или кто работал с мобильными приложениями, связанными напрямую...
С флаттером не работал, но с колокольни нативщика кажется, что вне зависимости от того, что выбирать, вопросы, связанные с безопасностью, реализуются нативными средствами.
Флаттер – это про шаринг UI и бизнес-логики. Условное хранение данных и шифрование под капотом у ios/android устроено по-разному.
Но могу предположить, что уже есть готовые модули для работы с этими штуками из флаттера – в этом случае конкретно с этим аспектом проблем быть не должно.

Chatgpt добавляет конкретики, но я бы ещё людей с опытом flutter послушал, так ли страшны болячки.

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


---

Преимущества нативной разработки в плане безопасности

1. Доступ к платформенным API:

Нативная разработка позволяет использовать платформенные API для работы с биометрией (Face ID, Touch ID) и Secure Enclave (iOS) или Trusted Execution Environment (TEE) на Android.

В Flutter для этого нужны сторонние библиотеки или плагины, которые иногда бывают менее надежными и могут содержать уязвимости.



2. Secure Storage и Secure Vault:

На нативных языках (Kotlin/Java на Android, Swift/Objective-C на iOS) можно напрямую использовать Keychain (iOS) и Android Keystore.

Flutter также может работать с этими хранилищами через плагины, но плагин может быть написан некорректно или не поддерживать все новые возможности платформ.



3. Меньший риск инъекций:

Нативный код проще защитить от атак типа "инъекция кода" или "динамический анализ" благодаря более прямому доступу к инструментам защиты.



4. Обфускация и защита кода:

В нативной разработке проще настроить обфускацию кода, что затрудняет анализ приложений злоумышленниками.

Flutter использует Dart, который тоже можно обфусцировать, но с нативным кодом защита работает более детализированно.



5. Производительность:

Нативные приложения более производительны, что критично для выполнения криптографических операций (например, работы с токенами или шифрованием данных).





---

Flutter: возможные риски и как их минимизировать

Flutter не лишен безопасности, но есть моменты, на которые стоит обратить внимание:

1. Плагины и библиотеки:

Большинство функционала безопасности реализуется через плагины (например, local_auth для биометрии, flutter_secure_storage для хранилищ). Это создает зависимость от качества стороннего кода.

Всегда проверяйте актуальность и популярность плагина, а также просматривайте его код.



2. Отсутствие прямого доступа к низкоуровневым API:

Если требуется специфичный функционал, как работа с HCE (Host Card Emulation) или TEE, потребуется писать платформенный код.



3. Обфускация и защита кода:

Dart-код компилируется в машинный, но его можно анализировать через инструменты вроде jd-cli. Для повышения защиты необходимо включать обфускацию и minification через dart2js и другие утилиты.



4. Размер приложения:

Flutter-приложения часто больше по размеру из-за встроенного движка, что может косвенно усложнить анализ безопасности, но это же создает риск загрузки большего числа библиотек.





---

Использование биометрии

На нативной стороне:

Android: BiometricPrompt API + Android Keystore.

iOS: LocalAuthentication + Keychain.


В Flutter:

Используется плагин local_auth, который покрывает 80-90% сценариев, но иногда может отставать от последних версий платформенных API.

Например, работа с PIN-кодами в случае отказа от биометрии реализуется сложнее.



---

Итог

Если безопасность — приоритет №1 (например, банковское приложение):

Однозначно выбирайте нативную разработку.

Это даст больше контроля, возможностей для оптимизации и прямого доступа к низкоуровневым функциям.


Если безопасность важна, но не критична, а хочется кроссплатформенности:

Flutter подходит, но:

Проводите тщательную проверку используемых плагинов.

Возможные уязвимости компенсируйте архитектурой и дополнительными слоями защиты.



Если нужны гибридные подходы:
1 message on this day