Mobile Security
Priority: P0 (CRITICAL)
OWASP-aligned mobile security and PII protection for Flutter.
Implementation Workflow
- Store secrets securely — Use
flutter_secure_storagefor tokens/PII. Never useshared_preferencesfor sensitive data. - Externalize secrets — Never store API keys in Dart code. Use
--dart-defineor.envfiles. - Obfuscate releases — Always build with
--obfuscateand--split-debug-info. This is a deterrent, not cryptographic protection; move sensitive logic to backend. - Pin certificates — For high-security apps, use
dio_certificate_pinningto prevent MITM attacks. - Detect jailbreak/root — Use
flutter_jailbreak_detectionfor financial/sensitive applications. - Mask PII — Redact sensitive data (email, phone) in all logs and analytics events.
Secure Storage & Release Build Examples
See implementation examples for secure storage usage and obfuscated release build commands.
Reference & Examples
For SSL Pinning and Secure Storage implementation details: See references/REFERENCE.md.
Anti-Patterns
- ❌
prefs.setString('auth_token', token)— tokens/PII must useflutter_secure_storage, never SharedPreferences - ❌
const apiKey = 'sk-…'hardcoded in Dart — store secrets via--dart-defineor a secure vault; never in source - ❌ Release build without
--obfuscate --split-debug-infoflags — unobfuscated binaries expose class/method names - ❌
print('User email: $email')— mask or omit PII in logs and analytics events entirely
Related Topics
common/security-standards | layer-based-clean-architecture | performance