跳过内容

MASTG-BEST-0008: WebView 调试已禁用

确保在生产版本中禁用 WebView 调试,以防止攻击者利用此功能窃听、修改或调试 WebView 中的通信。

  • 在生产环境中将 WebView.setWebContentsDebuggingEnabled 设置为 false,或者如果这些调用不必要,则完全删除它们。
  • 如果开发过程中需要 WebView 调试,请确保仅当应用处于可调试状态时才启用它,方法是在运行时检查 ApplicationInfo.FLAG_DEBUGGABLE 标志

例如

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
    { WebView.setWebContentsDebuggingEnabled(true); }
}

注意:以这种方式禁用 WebView 调试有助于保护设备上已运行的应用。攻击者若要利用 WebView 调试,必须拥有设备的物理访问权限(例如,被盗或测试设备),或者通过恶意软件或其他恶意手段获得远程访问权限。此外,设备通常必须处于解锁状态,攻击者需要知道设备 PIN、密码或生物识别认证才能完全控制并连接像 adb 或 Chrome DevTools 这样的调试工具。

然而,禁用 WebView 调试并不能消除所有的攻击途径。攻击者可能

  1. 修补应用以添加对这些 API 的调用(参见 修补),然后重新打包并重新签名(参见 重新打包与重新签名)。
  2. 使用运行时方法挂钩(参见 方法挂钩)在运行时动态启用 WebView 调试。

禁用 WebView 调试作为降低风险的一层防御,但应与其他安全措施结合使用。

测试

MASTG-TEST-0227: WebView 调试已启用