Channels / Cyprus_iT chat
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 подходит, но:
Проводите тщательную проверку используемых плагинов.
Возможные уязвимости компенсируйте архитектурой и дополнительными слоями защиты.
Если нужны гибридные подходы:
Флаттер – это про шаринг 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