2016-03-01 14 views
8

Uso l'SDK gorbin/ASNE nella mia app. Recentemente ho ricevuto un'email da Google con il seguente oggetto: "Google Play Warning: SSL Error Vulnerability Handler". In questa email, Google spiega che la mia app ha una "implementazione non sicura del gestore WebViewClient.onReceivedSslError"]Android Google Play Avviso: Vulnerabilità del gestore errori SSL

e mi hanno consigliato di ["Per gestire correttamente la convalida dei certificati SSL, modificare il codice per richiamare SslErrorHandler.proceed () ogni volta che il certificato presentato dal server soddisfa le vostre aspettative, e invocare SslErrorHandler.cancel() altrimenti "]

ecco la mia implementazione del metodo:

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

alcun aiuto per favore?

+1

Ci sono molte domande simili, per favore [date un'occhiata prima] (http://stackoverflow.com/search?tab=newest&q=onReceivedSslError). –

risposta

8

la soluzione è rimuovere onReceivedSslError

+0

Ho seguito questo commit: https://github.com/gorbin/ASNE/commit/85dadbfd7b31346b11ce642d4224e12561c8b169. –

9

per gestire correttamente la convalida dei certificati SSL, modificare il codice per richiamare SslErrorHandler.proceed() ogni volta che il certificato presentato dal server soddisfa le vostre aspettative, e invocare SslErrorHandler.cancel() altrimenti .

Ad esempio, aggiungo una finestra di avviso per confermare l'utente e sembra che Google non mostri più avviso.

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

Dopo questo cambia non mostrerà warning.Referencec link

+0

Questa dovrebbe essere la risposta accettata. +1. – WebViewer

1

stavo usando backendless biblioteca vecchia versione compilare 'com.backendless: backendless: 3.0.11' così ho aggiorno alla versione più recente compila 'com.backendless: backendless: 3.0.24' e il problema è risolto.