2016-02-05 13 views
11

Niedawno otrzymałem od Google wiadomość e-mail z następującym tematem: "Ostrzeżenie Google Play: Usterka mechanizmu obsługi błędów SSL". W tym e-mailu Google wyjaśnia, że ​​moja aplikacja ma ["niebezpieczną implementację obsługi WebViewClient: onReceivedSslError. W szczególności implementacja ignoruje wszystkie błędy sprawdzania certyfikatu SSL, czyniąc twoją aplikację podatną na ataki typu" man-in-the-middle ". osoba atakująca może zmienić treść WebView, odczytywać przesyłane dane (takie jak dane logowania) i wykonać kod w aplikacji przy użyciu JavaScript. "] ....................Google Play Ostrzeżenie: WebViewClient.onReceivedSslError handler

używam w moim kodu:

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 
     } 
    }); 

// Mój kod

webview_ClientPost(webView, "https://secure.payu.in/_payment", mapParams.entrySet()); 

Dlaczego Google gra wysyłając to ostrzeżenie dotyczące SSL? Czy to jest mój problem z kodem, czy problem z Payumoney?

+0

Jaka była twoja wersja OS, który wywołał ten problem? Mam również do czynienia z tym samym problemem i ludzie polecają mi zrobić to, co zrobiłeś ... Jestem zdezorientowany .. – San

+0

Rozwiązał on http://stackoverflow.com/questions/36050741/webview-avoid-security-alert- z-play-play-on-implementation-of-onreceiveds – BeyazBaron

Odpowiedz

-1

Problem występuje w kodzie. Kiedy dzwonisz pod numer handler.proceed();, to skutecznie usuwa wszystkie zabezpieczenia z połączenia.

Powinieneś usunąć swoją metodę onReceivedSslError. Domyślna implementacja odrzuci niebezpieczne połączenia.

+0

Czy to rozwiązanie sprawdziło się dla Ciebie? Otrzymuję ten sam alert w mojej Konsoli Google. – YuDroid

3

Mam nadzieję, że nie jest za późno na to .. że ostrzeżenie jest o tym, że powinieneś zawiadomić użytkownika, że ​​idzie na stronę z nieważnym certyfikatem, nie powinieneś postępować bezpośrednio.

Można implment powiadomienie dialogowe coś takiego:

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

ten został zaczerpnięty z odpowiedziami Sakim w tym linku: Webview avoid security alert from google play upon implementation of onReceivedSslError

+1

Dziękuję bardzo –

Powiązane problemy