我有一个将在 webview 中打开的链接。问题是它无法打开,直到我像这样覆盖 onReceivedSslError:
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
我收到来自 google play 的安全警报:
安全警报 您的应用程序的 WebViewClient.onReceivedSslError 处理程序的实现不安全。具体来说,该实现会忽略所有 SSL 证书验证错误,从而使您的应用容易受到中间人攻击。攻击者可以更改受影响的 WebView 的内容,读取传输的数据(例如登录凭据),并使用 JavaScript 在应用程序内执行代码。
要正确处理 SSL 证书验证,请更改您的代码以在服务器提供的证书符合您的期望时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。包含受影响应用程序和类的电子邮件警报已发送到您的开发者帐户地址。
请尽快解决此漏洞,并增加升级后的APK版本号。有关 SSL 错误处理程序的更多信息,请参阅开发者帮助中心中的文档。对于其他技术问题,您可以发布到https://www.stackoverflow.com/questions并使用标签“android-security”和“SslErrorHandler”。如果您使用的是负责此问题的第 3 方库,请通知第 3 方并与他们一起解决问题。
要确认您已正确升级,请将更新后的版本上传到开发者控制台,并在五小时后回来查看。如果应用程序未正确升级,我们将显示警告。
请注意,虽然这些特定问题可能不会影响使用 WebView SSL 的每个应用程序,但最好及时更新所有安全补丁。存在使用户面临泄露风险的漏洞的应用程序可能会被视为违反内容政策和开发者分发协议第 4.4 节的危险产品。
请确保所有发布的应用都符合开发者分发协议和内容政策。如果您有任何问题或疑虑,请通过 Google Play 开发者帮助中心联系我们的支持团队。
如果我删除onReceivedSslError (handler.proceed())
,则页面将无法打开。
无论如何我可以在 webview 中打开页面并避免安全警报。