1. Знайте, что вы используете
Сообщество Flutter очень хорошее. Многие полезные и качественные пакеты на pub.dev готовы к использованию многими сопровождающими с открытым исходным кодом. Теперь разработка фронтенд-приложений стала быстрой и легкой. Хотя многие пакеты хорошего качества и постоянно поддерживаются, не помешает уделить секунду внимания тому, кто их публикует, статус поддержки и, если возможно, исходный код. Поскольку код написан третьей стороной, рекомендуется взглянуть хотя бы на возможность использования уязвимого кода. Особенно, если вы разрабатываете приложение, обрабатывающее конфиденциальные данные пользователей, уязвимость может стать риском утечки данных.
2. Поддерживайте все вещи в актуальном состоянии
Нет ничего идеального. Как официальные, так и сторонние фреймворки и пакеты постоянно выпускают новые версии для исправления проблем безопасности и устранения уязвимостей. Старайтесь поддерживать последнюю версию flutter и пакетов, чтобы приложение было лучше защищено.
3. Ограничение сетевого трафика
Контроль сетевого трафика между известным сервером и вашим приложением позволяет избежать неожиданного подключения и совершить рискованный шаг. Например, Android может взглянуть на конфигурацию сетевой безопасности, которая представляет собой xml-конфигурацию, определенную в проекте Android для обратного и белого списка доменов и трафика. IOS имеет аналогичную конфигурацию в info.plist
для доверенного домена и трафика, вы можете взглянуть на NSAppTransportSecurity.
4. Шифруйте конфиденциальные данные перед отправкой в бокс
Иногда нам приходится хранить конфиденциальные данные на локальном сервере, шифрование перед хранением является хорошей практикой, чтобы избежать утечки данных. Некоторые популярные пакеты предоставляют простой метод хранения данных с шифрованием, например, flutter_secure_storage, encrypted_shared_preferences и hive (база данных) предоставляют методы хранения зашифрованных данных, но, как уже упоминалось ранее, это связано с конфиденциальными данными, поэтому потратьте немного времени на изучение криптографических методов, используемых пакетами на разных платформах, чтобы определить, соответствуют ли они тому, что вы ожидаете.
5. Обфускация при выпуске
Старайтесь включать опцию obfuscate при сборке релизной версии. Это может усложнить обратную разработку приложения flutter.
В настоящее время только Android, IOS и MacOS поддерживают опцию obfuscate.
flutter build <support apk, appbundle, ipa, ios and ios-framework> --obfuscate --split-debug-info=/<project-name>/<directory>
На Android рекомендуется также включить proguard, который может обфусцировать нативный код Android, а также минимизировать размер приложения Android.
/android/app/build.gradle
android {
buildTypes {
release {
// Enables code shrinking, obfuscation, and optimization for only
// your project's release build type.
minifyEnabled true
// Enables resource shrinking, which is performed by the
// Android Gradle plugin.
shrinkResources true
// Includes the default ProGuard rules files that are packaged with
// the Android Gradle plugin. To learn more, go to the section about
// R8 configuration files.
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'),
'proguard-rules.pro'
}
}
}
/android/app/proguard-rules.pro
# Flutter
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
# Any other classes the packages mentioned
Насколько я знаю, есть компании по мобильной безопасности, предоставляющие платные решения по обфускации flutter app, которые также могут быть приняты во внимание для обеспечения высокой безопасности приложения.
Ссылка
- Android Proguard
- Flutter Security
- Конфигурация сетевой безопасности
- NSAppTransportSecurity
Поддержите меня, если вам нравится содержание🍖
Подключайтесь🍻