2017-01-20 16 views
0

WebViewを使用して、アプリでpaytm支払いページを読み込みます。このプロセスでは、SSL証明書のエラーが発生しました。これを処理するために、コード内にSslErrorHandler.proceed()を追加しました。すべてがうまくいきます。私は店にこのAPKを公開しようとしたが、このアプリは言及拒否されてしまったWebViewClient.onReceivedSslErrorハンドラのAndroidで安全でない実装

WebViewClient.onReceivedSslErrorハンドラここ

危険な実装では、私のコード

fcweb.getSettings().setJavaScriptEnabled(true); 
    fcweb.getSettings().setDomStorageEnabled(true); 
    fcweb.setLongClickable(false); 
    fcweb.setHapticFeedbackEnabled(false); 
    CookieManager.getInstance().setAcceptCookie(true); 
    fcweb.setWebViewClient(new WebViewClient(){ 

     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
      handler.proceed(); // Ignore SSL certificate errors 
      L.d("SSL Error received"); 

     } 

    }); 

です:私はいけませんエラーに関する警告ダイアログを表示したい。 これを解決するにはどうすればよいですか?

+0

可能な重複[WebViewのonReceivedSslErrorの実装にGoogle Playからセキュリティ警告を避ける](http://stackoverflow.com/questions/36050741/webview-avoid-security-alert-from-google-play-upon -implementation-of-onreceiveds) –

+0

@ShubhamShuklaあなたのお返事ありがとうございます。私はこのリンクを見ましたが、警告ダイアログを表示すると悪影響が生じます。そのような警告が表示された場合、ユーザーは処理を進めません。 –

+0

しかし、さまざまなリスクにユーザーをさらさないようにする必要があります。 –

答えて

0

必ずしも強制しないhandler.proceed(); handler.cancel()もインクルードする必要があります。ユーザーは危険なコンテンツの読み込みを避けることができます。

SSL証明書の検証を正しく処理するには、サーバーによって提示された証明書が期待どおりになるたびにSslErrorHandler.proceed()を呼び出すようにコードを変更し、それ以外の場合はSslErrorHandler.cancel()を呼び出します。

@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(); 
} 
+0

このような警告を表示すると、ユーザーエクスペリエンスに悪影響が生じます。セキュリティエラーのようなアラートが表示された場合は、さらに進んでいない可能性があります。 –

+0

質問に私のコメントを参照してください –

+0

私は良いアイデアは考えていませんが、アプリを公開している間に警告を解決するのだろうか? –

関連する問題