如何处理应用中的 WebView SSL 错误处理程序提醒。

本文面向的是在应用中采用不安全的 WebViewClient.onReceivedSslError 处理程序实现方式的开发者。

问题说明

您的一个或多个应用采用了不安全的 onReceivedSslError 处理程序实现方式,这会使应用容易遭受中间人攻击。攻击者可能会更改受影响 WebView 的内容、读取传输的数据(例如登录凭据),以及在应用中执行 JavaScript 代码。请参阅 Play 管理中心内的通知。Play 管理中心内显示的最后期限过后,系统可能会将所有包含未修复安全漏洞的应用从 Google Play 中移除

需要采取的行动​

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

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

更多详细信息

  1. 为了解决此问题,请将您的应用代码更新为在服务器提供的证书符合您的预期时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。在检查证书的有效性方面,请注意以下几点:
    1. 如果应用针对证书有效性采用的检查机制不够充分,我们可能会判定该应用存在问题。例如:只检查 getPrimaryError 的返回值不足以确定证书的有效性。

    2. 忽略 SslError.getPrimaryError 返回的大多数 SSL 错误是不安全的做法。请注意,getPrimaryError 会返回多个错误中最严重的那个错误。因此,如果 getPrimaryError() != SSL_UNTRUSTED 的值为 true,则表明相应连接的多个错误中可能仍存在一个 SSL_UNTRUSTED 错误。

  2. 如果是您使用的第三方库导致了此漏洞,请通知该第三方,并与其合作解决此问题。

如需详细了解 SSL 错误处理程序,请参阅 Android 开发者帮助中心内的相关文档。如有其他技术问题,您可以在 https://www.stackoverflow.com/questions 上发帖咨询(使用“android-security”和“SslErrorHandler”标签)。

尽管这些具体问题并非一定会影响使用 WebView SSL 的所有应用,但我们仍建议您安装所有最新的安全补丁。如果应用存在会让用户面临被入侵风险的漏洞,那么我们可能会因其违反内容政策和《开发者分发协议》第 4.4 条的规定而将其视为危险产品

我们随时为您提供帮助

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

该内容对您有帮助吗?

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