跳转至

Index

调用危险的 WebView 设置 API

描述

应用程序中使用的所有 WebView 方法的列表。

建议

为了缓解危险的 WebView API 使用:

主要防御 – 禁用混合内容:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
}
- 防止 HTTPS 页面加载不安全的 HTTP 资源 - 阻止通过注入脚本进行的中间人攻击

限制文件访问:

webView.getSettings().setAllowFileAccess(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    webView.getSettings().setAllowFileAccessFromFileURLs(false);
    webView.getSettings().setAllowUniversalAccessFromFileURLs(false);
}
- 阻止对 file:// 方案的漏洞利用 - 防止本地文件和数据库泄露

加固 JavaScript 接口:

webView.removeJavascriptInterface("interfaceName"); // Remove if not needed
// If required, only expose minimal @JavascriptInterface methods
- 避免通过 addJavascriptInterface() 执行远程代码 - 如果需要 JS 桥接,请使用 WebMessagePort 或将受信任的源添加到允许列表

其他保护措施:

  • 在生产环境中禁用 WebView 调试:

    WebView.setWebContentsDebuggingEnabled(false);
    
  • 启用安全浏览(API 26+):

WebView.enableSafeBrowsing(context);

通过禁用混合内容、限制文件访问并保护 JavaScript 桥接,您可以消除与危险的 WebView API 相关的主要攻击向量,同时确保应用程序的 WebView 功能安全。

链接

标准

  • 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