2016-03-01 27 views
8

Używam SDK gorbin/ASNE w mojej aplikacji. 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"]Android Google Play Ostrzeżenie: Luka w obsłudze obsługi błędów SSL

i zaleciła mi [Aby poprawnie obsłużyć sprawdzanie certyfikatu SSL, zmień kod, aby wywołać SslErrorHandler.proceed () gdy certyfikat przedstawiony przez serwer spełnia Twoje oczekiwania, i powołują SslErrorHandler.cancel() inaczej "]

oto moja wdrożenie metody:

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
       handler.proceed(); 
      } 

Każda pomoc proszę?

+1

Istnieje wiele podobnych pytań, proszę [najpierw spójrz] (http://stackoverflow.com/search?tab=newest&q=onReceivedSslError). –

Odpowiedz

8

rozwiązaniem jest usunięcie onReceivedSslError

+0

Po tej instrukcji: https://github.com/gorbin/ASNE/commit/85dadbfd7b31346b11ce642d4224e12561c8b169. –

9

Aby prawidłowo obsługiwać sprawdzanie poprawności certyfikatu SSL, zmienić swój kod do wywołania SslErrorHandler.proceed(), gdy certyfikat przedstawiony przez serwer spełnia Twoje oczekiwania, i powołują SslErrorHandler.cancel() inaczej .

Na przykład dodaję okno dialogowe z ostrzeżeniem, aby użytkownik potwierdził i wydaje się, że Google nie wyświetla już ostrzeżenia.

@Override 
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { 
    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    String message = "SSL Certificate error."; 
     switch (error.getPrimaryError()) { 
      case SslError.SSL_UNTRUSTED: 
       message = "The certificate authority is not trusted."; 
       break; 
      case SslError.SSL_EXPIRED: 
       message = "The certificate has expired."; 
       break; 
      case SslError.SSL_IDMISMATCH: 
       message = "The certificate Hostname mismatch."; 
       break; 
      case SslError.SSL_NOTYETVALID: 
       message = "The certificate is not yet valid."; 
       break; 
     } 
     message += " Do you want to continue anyway?"; 

     builder.setTitle("SSL Certificate Error"); 
     builder.setMessage(message); 
    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(); 
} 

Po zmienia nie pokaże warning.Referencec link

+0

To powinna być zaakceptowana odpowiedź. +1. – WebViewer

1

używałem backendless biblioteki starą wersję kompilacji 'com.backendless: backendless: 3.0.11' więc aktualizować do najnowszej wersji kompilacji "com.backendless: backendless: 3.0.24 ' i problem rozwiązany.