在Android SDK 23中onReceivedError(WebView view, int errorCode, String description, String failingUrl)已被弃用并替换为onReceivedError(WebView view, WebResourceRequest request, WebResourceError error).但是,如果我将手机置于飞行模式并在我的WebView上加载网址,则只会调用该方法的弃用版本.
onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) 也没用,因为它只检测高于500的错误,并且我得到109状态代码.
是否有一种不推荐的方法来检测我的WebView无法加载?
我收到了来自Google的电子邮件,主题如下: Google Play Warning: SSL Error Handler Vulnerability". In this email, Google explains that my app has an ["unsafe implementation of the WebViewClient.onReceivedSslError handler"
这是我的方法实现(WebView Client):
public class MyBrowser extends WebViewClient {
boolean timeout;
public MyBrowser() {
timeout = true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
try {
progressBar.setVisibility(View.VISIBLE);
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
try{
progressBar.setVisibility(View.GONE); …Run Code Online (Sandbox Code Playgroud) 得到谷歌播放的警告.
如何处理WebViewClient.onReceivedSslError处理程序的不安全实现的"SSL错误处理程序漏洞".
"请尽快解决此漏洞并增加已升级APK的版本号.要正确处理SSL证书验证,只要服务器提供的证书符合您的期望,就更改您的代码以调用SslErrorHandler.proceed(),并调用SslErrorHandler .cancel()否则."
我最近收到了Google发来的一封电子邮件,内容如下:"Google Play警告:SSL错误处理程序漏洞".在这封电子邮件中,Google解释说我的应用程序有一个["不安全的WebViewClient实现.onReceivedSslError处理程序.具体来说,该实现会忽略所有SSL证书验证错误,使您的应用程序容易受到中间人攻击.攻击者可以更改受影响的WebView内容,读取传输的数据(如登录凭据),并使用JavaScript在应用程序内执行代码."] ....................
我在我的代码中使用:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// My code
}
});
Run Code Online (Sandbox Code Playgroud)
//我的代码
webview_ClientPost(webView, "https://secure.payu.in/_payment", mapParams.entrySet());
Run Code Online (Sandbox Code Playgroud)
为什么Google会发送有关SSL的警告?这是我的代码问题还是PayUMoney问题?
我在我的应用程序中使用gorbin/ASNE SDK.我最近收到了Google发来的一封电子邮件,内容如下:"Google Play警告:SSL错误处理程序漏洞".在这封电子邮件中,Google解释说我的应用程序有["WebViewClient.onReceivedSslError处理程序的不安全实现"]
他们建议我["要正确处理SSL证书验证,只要服务器提供的证书符合您的期望,就更改代码以调用SslErrorHandler.proceed(),并调用SslErrorHandler.cancel()否则"]
这是我的方法实现:
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
我试图理解并解决为什么我的应用程序被拒绝我知道它是关于SSL的,但我似乎无法找到导致它的依赖项.我正在使用下一个设置:
任何帮助,将不胜感激.
更新:这是来自警报部分
安全警报
您的应用程序具有WebViewClient.onReceivedSslError处理程序的不安全实现.具体来说,该实现忽略了所有SSL证书验证错误,使您的应用程序容易受到中间人攻击.攻击者可以使用JavaScript更改受影响的WebView内容,读取传输的数据(例如登录凭据),以及在应用程序内部执行代码.要正确处理SSL证书验证,只要服务器提供的证书符合您的期望,就更改代码以调用SslErrorHandler.proceed(),否则调用SslErrorHandler.cancel().包含受影响的应用和类别的电子邮件警报已发送到您的开发者帐户地址.请尽快解决此漏洞并增加已升级APK的版本号.有关SSL错误处理程序的更多信息,请参阅开发人员帮助中心中的文档.对于其他技术问题,您可以发布到https://www.stackoverflow.com/questions并使用标签"android-security"和"SslErrorHandler."如果您使用的是负责此操作的第三方库,请通知第三方并与他们合作解决问题.要确认您已正确升级,请将更新后的版本上传到开发者控制台,并在五小时后再回来查看.如果应用尚未正确升级,我们将显示警告.请注意,虽然这些特定问题可能不会影响使用WebView SSL的每个应用程序,但最好保持所有安全补丁的最新状态.如果应用程序存在漏洞,导致用户面临泄密风险,则可能会被视为违反了我们的恶意行为政策和开发者分发协议第4.4节.请确保发布的所有应用均符合开发者分发协议和开发者计划政策.如果您有任何疑问或疑虑,请通过Google Play开发者帮助中心与我们的支持小组联系.影响APK版本2.
android google-console-developer android-security sslerrorhandler
我实现了一个基本上在webview中加载Amazon的应用程序,所以显然我们不应该担心ssl错误,但是,我遇到了一个问题,即两个用户在尝试加载页面时只收到一个空白页面.
通过重载onReceivedSslError()方法,我能够确定webview抛出很多SSL_INVALID并且能够通过忽略它们并调用handler.proceed函数来加载页面.
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
handler.proceed();
}
Run Code Online (Sandbox Code Playgroud)
这两个问题都发生在Android 5.0+上,因此,我尝试从谷歌播放下载webview应用程序,因为在Android 5.0之后webview是外部的.它解决了这个问题.没有更多的SSL错误被抛出,亚马逊装得很好.
现在这里是我能够在两个用户之间找到的相关性.他们两个都拥有Android 5.0+并且以前都能够在webview中加载亚马逊,但是在他们的存储空间不足之后又遇到了这个问题.我认为存储问题导致webview开始抛出这些SSL错误?
我问是否有人可以解释为什么会发生这种情况,以及是否有任何缓解措施?