Android Legacy Security Standards
Priority: P0 (CRITICAL)
1. Secure Intents and Components
- Set
android:exported="false"for all internal Activities/Services unless needed for deep links. - Verify
resolveActivitybefore starting implicit intents. - Treat all incoming Intent extras as untrusted — validate all schema/data types.
See hardening examples for manifest and component restrictions.
2. Lock Down WebViews
- Default to
javaScriptEnabled = false. UseWebViewClientandWebChromeClientto restrict navigation. - Disable
allowFileAccessandallowFileAccessFromFileURLsto prevent local file theft via XSS. - If using
@JavascriptInterface(API 17+), strictly limit exposed API surface.
See hardening examples for WebView lockdown patterns.
3. Protect Storage and Files
- NEVER expose
file://URIs. UseFileProviderto generatecontent://URIs with temporary permissions. - Use
EncryptedSharedPreferencesfor auth tokens and PII. Never use legacy public-read file modes. - Use
NetworkSecurityConfigto disablecleartextTrafficPermittedand implement certificate pinning.
Anti-Patterns
- No Implicit Intents Internally: Use explicit intents with component class name.
- No Public Read Modes: Never expose SharedPreferences or files with global read access.
References
- Hardening Examples