本文面向的是发布的应用中存在 JavaScript 注入漏洞的开发者。
问题说明
请参阅 Play 管理中心内的通知。在 Play 管理中心内显示的截止日期过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除。
需要采取的行动
- 登录您的 Play 管理中心,然后转到“提醒”部分,了解受影响的应用以及解决这些问题的截止日期。
- 更新受影响的应用并修复该漏洞。
- 提交受影响应用的更新版本。
重新提交后,我们会重新审核您的应用。审核过程可能需要几个小时才能完成。如果应用通过审核并成功发布,便无需进一步操作。如果应用未通过审核,则新版应用将无法发布,您会收到电子邮件通知。
更多详细信息
如果 WebView 通过 addJavascriptInterface 向 JavaScript 代码提供应用级对象,并加载不受信任的网络内容,便很容易遭到 JavaScript 界面注入攻击。如果提供的对象使用了加有 @JavascriptInterface 注释的方法,不受信任的内容可能会执行这些方法,从而导致数据泄漏或损坏,甚至让别有用心的人执行任意代码。
为避免此安全漏洞,建议您采用下列其中一种方法:
方法 1:确保 WebView 不会在 JavaScript 界面中添加对象
请检查是否有任何 WebView 会加载不受信任的网络内容,并确保其 JavaScript 界面中没有添加对象。您可以通过以下两种方法来检查:
检查 JavaScript 界面中没有任何通过 addJavascriptInterface 调用而添加的对象。
-
在 WebView 加载不受信任的内容之前,通过 removeJavascriptInterface 从 shouldInterceptRequest 中移除 JavaScript 界面内的对象。
方法 2:确保 WebView 不会加载不受信任的网络内容
如果您的应用需要向 WebView 的 JavaScript 界面提供对象,请确保 WebView 不会通过未加密的连接加载网络内容。您可以在清单中将 android:usesCleartextTraffic 设为 false,或设置禁止 HTTP 流量的网络安全配置。您也可以防止任何受影响的 WebView 通过 loadUrl 加载采用 HTTP 协议的网址。
请务必防止带有 JavaScript 界面的 WebView 加载从不受信任来源获取的尚未经核查的网址(例如,从不受信任的 Intent 中获取的网址)。
我们会随时为您提供帮助
如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。有关您需要采取哪些步骤来解决此问题的说明,请与我们的开发者支持团队联系。