mcpbeat

Android Legacy Security

hoangnguyen0403/android-legacy-security

Harden Intent handling, WebView configuration, and FileProvider access in Android apps. Use when securing Intent extras, configuring WebViews, or exposing files via FileProvider; defer manifest export flags and generic Bundle typing to focused Android security guidance.

2k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
536
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/HoangNguyen0403/agent-skills-standard --skill android-legacy-security

What comes with it

4 983 bytes besides the instruction
evals/evals.json
references/implementation.md

The instruction itself

7 sections, as written by the author

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 resolveActivity before 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. Use WebViewClient and WebChromeClient to restrict navigation.
  • Disable allowFileAccess and allowFileAccessFromFileURLs to 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. Use FileProvider to generate content:// URIs with temporary permissions.
  • Use EncryptedSharedPreferences for auth tokens and PII. Never use legacy public-read file modes.
  • Use NetworkSecurityConfig to disable cleartextTrafficPermitted and 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

How to use it

Copy the folder

Take hoangnguyen0403/android-legacy-security from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.