Skillshub android-legacy-security
Standards for Intents, WebViews, and FileProvider. Use when securing Intent handling, WebViews, or FileProvider access in Android. (triggers: **/*Activity.kt, **/*WebView*.kt, AndroidManifest.xml, Intent, WebView, FileProvider, javaScriptEnabled)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/android-legacy-security" ~/.claude/skills/comeonoliver-skillshub-android-legacy-security && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/android-legacy-security/SKILL.mdsource content
Android Legacy Security Standards
Priority: P0
Implementation Guidelines
Intents & Components
- Visibility: Set
in the Manifest for all internal Activities/Services unless explicitly needed for deep links or external integration.android:exported="false" - Intents: Verify
before starting implicit intents. UseresolveActivity
(legacy) orLocalBroadcastManager
for internal communication.SharedFlow/StateFlow - Data: Treat all incoming Intent extras as untrusted. Validate all schema/data types before consumption.
WebView
- JS: Default to
. UsejavaScriptEnabled = false
andWebViewClient
to restrict navigation and origin access.WebChromeClient - File Access: Disable
andallowFileAccess
to prevent local file theft via XSS.allowFileAccessFromFileURLs - Bridge: If creating a
, useJavascriptInterface
(API 17+) and strictly limit the exposed API surface.@JavascriptInterface
Storage & Files
- File Exposure: NEVER expose
URIs. Usefile://
(androidx) to generateFileProvider
URIs with temporary permissions.content:// - SharedPreferences: Use
(Security library) for auth tokens and PII. Never useEncryptedSharedPreferences
(deprecated/insecure).MODE_WORLD_READABLE - Network: Use
to disableNetworkSecurityConfig
(mandatory for API 28+) and implement SSL Pinning/Certificate Pinning.cleartextTrafficPermitted
Anti-Patterns
- No Implicit Intents Internally: Use explicit intents with the component class name.
- No MODE_WORLD_READABLE: Never use for SharedPreferences or files.