Android Legacy Security Standards
Priority: P0
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 the 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 useMODE_WORLD_READABLE. - Use
NetworkSecurityConfigto disablecleartextTrafficPermittedand implement certificate pinning.
Anti-Patterns
- No Implicit Intents Internally: Use explicit intents with the component class name.
- No MODE_WORLD_READABLE: Never use for SharedPreferences or files.