Index
调用危险的 WebView 设置 API
描述
应用程序中使用的所有 WebView 方法的列表。
建议
为了缓解危险的 WebView API 使用:
主要防御 – 禁用混合内容:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
}
限制文件访问:
webView.getSettings().setAllowFileAccess(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
webView.getSettings().setAllowFileAccessFromFileURLs(false);
webView.getSettings().setAllowUniversalAccessFromFileURLs(false);
}
加固 JavaScript 接口:
webView.removeJavascriptInterface("interfaceName"); // Remove if not needed
// If required, only expose minimal @JavascriptInterface methods
其他保护措施:
-
在生产环境中禁用 WebView 调试:
WebView.setWebContentsDebuggingEnabled(false); -
启用安全浏览(API 26+):
WebView.enableSafeBrowsing(context);
通过禁用混合内容、限制文件访问并保护 JavaScript 桥接,您可以消除与危险的 WebView API 相关的主要攻击向量,同时确保应用程序的 WebView 功能安全。
链接
- DRD02-J. Do not allow WebView to access sensitive local resource through file scheme (CERT Secure Coding)
- DRD13. Do not provide addJavascriptInterface method access in a WebView which could contain untrusted content (CERT Secure Coding)
标准
- OWASP_MASVS_L1:
- MSTG_PLATFORM_6
- MSTG_PLATFORM_5
- OWASP_MASVS_L2:
- MSTG_PLATFORM_6
- MSTG_PLATFORM_5
- OWASP_MASVS_v2_1:
- MASVS_PLATFORM_2
- MASVS_PLATFORM_3