2016-03-01 3 views
8

Ich verwende das Gorbin/ASNE-SDK in meiner App. Ich habe kürzlich eine E-Mail von Google mit folgendem Betreff erhalten: "Sicherheitsanfälligkeit in Google Play: SSL-Fehlerbehandlung". In dieser E-Mail, erklärt Google, dass meine app eine [ „unsichere Implementierung des WebViewClient.onReceivedSslError handler“]Android Google Play Warnung: Sicherheitsanfälligkeit durch SSL-Fehlerhandler

und empfahl mir [ "Um richtig SSL-Zertifikatüberprüfung zu umgehen, ändern Sie den Code SslErrorHandler.proceed aufzurufen hat (), wenn das Zertifikat von dem Server präsentiert Ihren Erwartungen entspricht, und SslErrorHandler.cancel() sonst "]

hier ist meine Implementierung der Methode aufrufen: bitte

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

jede mögliche Hilfe?

+1

Es gibt viele ähnliche Fragen, bitte [gucke zuerst] (http://stackoverflow.com/search?tab=newest&q=onReceivedSslError). –

Antwort

8

die Lösung SSL-Zertifikat-Validierung Griff onReceivedSslError

+0

Ich folgte von diesem Commit: https://github.com/gorbin/ASNE/commit/85dadffd7b31346b11ce642d4224e12561c8b169. –

9

So ändern Sie den Code richtig, entfernen SslErrorHandler.proceed(), wenn die Urkunde vom Server Ihren Erwartungen entspricht, und rufen Sie SslErrorHandler.cancel() sonst aufzurufen .

Zum Beispiel, ich füge einen Warndialog, um Benutzer bestätigt haben und scheint Google nicht mehr Warnung angezeigt.

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

Danach ändert, wird es nicht warning.Referencec link

+0

Dies sollte die akzeptierte Antwort sein. +1. – WebViewer

1

ich zeigen, wurde mit backendless Bibliothek alte Version 'com.backendless: backendless: 3.0.11' kompilieren so i aktualisieren zur neuesten Version kompilieren 'com.backendless: backendless: 3.0.24' und Problem gelöst.

Verwandte Themen