针对 JavaScript 界面注入漏洞采取的补救措施

本文面向的是发布的应用中存在 JavaScript 注入漏洞的开发者。

问题说明

请参阅 Play 管理中心内的通知。Play 管理中心内显示的截止日期过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除。

需要采取的行动​

  1. 登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的截止日期。
  2. 更新受影响的应用并修复该漏洞。
  3. 提交受影响应用的更新版本。

重新提交后,我们会重新审核您的应用。审核过程可能需要几个小时才能完成。如果应用通过审核并成功发布,便无需进一步操作。如果应用未通过审核,则新版应用将无法发布,您会收到电子邮件通知。

更多详细信息

如果 WebView 通过 addJavascriptInterface 向 JavaScript 代码提供应用级对象,并加载不受信任的网络内容,便很容易遭到 JavaScript 界面注入攻击。如果提供的对象使用了加有 @JavascriptInterface 注释的方法,不受信任的内容可能会执行这些方法,从而导致数据泄漏或损坏,甚至让别有用心的人执行任意代码。

为避免此安全漏洞,建议您采用下列其中一种方法:

方法 1:确保 WebView 不会在 JavaScript 界面中添加对象

请检查是否有任何 WebView 会加载不受信任的网络内容,并确保其 JavaScript 界面中没有添加对象。您可以通过以下两种方法来检查:

 

检查 JavaScript 界面中没有任何通过 addJavascriptInterface 调用而添加的对象。

  1. 在 WebView 加载不受信任的内容之前,通过 removeJavascriptInterfaceshouldInterceptRequest 中移除 JavaScript 界面内的对象。

方法 2:确保 WebView 不会加载不受信任的网络内容

如果您的应用需要向 WebView 的 JavaScript 界面提供对象,请确保 WebView 不会通过未加密的连接加载网络内容。您可以在清单中将 android:usesCleartextTraffic 设为 false,或设置禁止 HTTP 流量的网络安全配置。您也可以防止任何受影响的 WebView 通过 loadUrl 加载采用 HTTP 协议的网址。


请务必防止带有 JavaScript 界面的 WebView 加载从不受信任来源获取的尚未经核查的网址(例如,从不受信任的 Intent 中获取的网址)。

我们会随时为您提供帮助

如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。

该内容对您有帮助吗?

您有什么改进建议?
false
主菜单
7534920815732261493
true
搜索支持中心
true
true
true
true
true
5016068
false
false