您的位置:首页 > 移动开发

Webview使用onReceivedSslError方法,apk被Google play rejected

2017-01-17 11:54 731 查看
下面是在Google Play上发布项目时,Google play rejected发送过来的原因。

**如何处理应用中的 WebView SSL 错误处理程序提醒**
本文面向的是在应用中采用的 WebViewClient.onReceivedSslError 处理程序实施方式不安全的开发者。具体来说,这种实施方式会忽略所有 SSL 证书验证错误,使应用容易受到中间人攻击。攻击者可能会更改受影响的 WebView 内容、读取传输的数据(例如登录凭据),以及执行应用中使用 JavaScript 的代码。
从 2016 年 11 月 25 日起,Google Play 将禁止发布任何包含此类漏洞的新应用或应用更新。您已发布的 APK 版本不会受到影响,但是,在修复此漏洞前,您将无法为应用发布任何更新。
后续步骤
1.  为了纠正此问题,请将您的应用代码更新为在服务器提供的证书符合您的预期时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。
2.  如果是您使用的第三方库导致的安全漏洞,请通知该第三方,并与其合作解决此问题。
3.  更改完成后,请登录 Developer Console 并提交应用的更新版本。
4.  过 5 个小时后再回来查看。如果应用未正确更新,系统将会显示相应的警告消息。请注意,即使您的应用已修复相应漏洞,处理过程也可能会有所延迟,这是很常见的情况。
有关 SSL 错误处理程序的详情,请访问 Android 开发者帮助中心查看相关文档。如有其他技术问题,您可以在 https://www.stackoverflow.com/questions 上发帖咨询并使用“android-security”和“SslErrorHandler”标签。
尽管这些具体问题不一定会对使用 WebView SSL 的所有应用都造成影响,但我们仍建议您安装所有最新的安全补丁。如果应用包含会让用户面临入侵风险的安全漏洞,那么我们可能会将其视为危险产品(违反《内容政策》和《开发者分发协议》第 4.4 条的相关规定)。
此外,应用还必须遵循开发者分发协议和内容政策。如果您认为我们发送此警告的判断有误,请通过 Google Play 开发者帮助中心与我们的政策支持团队联系。


其实google已经给出了解决方案,我们只是要实现以下而已。

@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.notification_error_ssl_cert_invalid);
builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
}


下面是stackoverflow别人的解决方法。

Webview avoid security alert from google play upon implementation of onReceivedSslError

Webview的使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: