A WebView with JavaScript bridges runs web content next to native code. If it loads content the app does not control, or accepts bridge messages from any frame, a cross-site scripting bug becomes access to native features and stored data.
- Load only content you control, and turn off JavaScript and file access when the page does not need them.
- Expose the smallest bridge API, and act only on messages from the expected origin and main frame.
- Restrict navigation to approved domains, with app-bound domains on iOS and
WebViewAssetLoaderfor local content on Android.
MASTG tests in the local projects
The local projects run these OWASP MASTG v2.0.0 tests for MASVS-PLATFORM-2, as tests you can repeat on your own machine.
| MASTG test | Platform | Project |
|---|---|---|
| MASTG-TEST-0376: References to Native Bridge APIs in WebViews | iOS | Keep an iOS app's storage, links and web bridge in bounds · WebBridgeTests |
Guides on this site
Harden an iOS app's storage, network and entry points
Store secrets in the Keychain with the narrowest accessibility class, set file protection explicitly, keep App Transport Security on, prefer universal links, constrain WKWebView bridges, keep step-up keys in the Secure Enclave, verify App Attest on the server and ship an accurate privacy manifest, mapped to OWASP MASVS 2.1.
Harden an Android app's storage, network and entry points
Encrypt local secrets with Android Keystore keys now that Jetpack Security is deprecated, set transport policy in Network Security Configuration, close exported components and mutable PendingIntents, confine WebViews, verify App Links and judge Play Integrity verdicts on the server, mapped to OWASP MASVS 2.1.
Practice
- Keep an iOS app's storage, links and web bridge in bounds · Local project
- Repair an Android app's links, components, network policy and storage · Local project
References
List data from the publisher. A guide is listed as the main subject when the weakness or risk is what the guide is about, and as covering it when a dedicated section or worked example addresses it.
Control statements are quoted from OWASP MASVS v2.1.0, licensed CC BY-SA 4.0; the rest is this site's summary. MASTG tests are those the iOS and Android projects here run, with their titles from mas.owasp.org. License.