2016-02-05 14 views
11

Recentemente ho ricevuto un'email da Google con il seguente oggetto: "Google Play Avviso: vulnerabilità del gestore errori SSL". In questa email, Google spiega che la mia app ha un'implementazione non sicura del gestore WebViewClient. onReceivedSslError. In particolare, l'implementazione ignora tutti gli errori di convalida dei certificati SSL, rendendo la tua app vulnerabile agli attacchi man-in-the-middle. l'utente malintenzionato potrebbe modificare il contenuto di WebView interessato, leggere i dati trasmessi (come le credenziali di accesso) ed eseguire il codice all'interno dell'app utilizzando JavaScript. "] ....................Avviso Google Play: WebViewClient.onReceivedSslManico di errori

sto utilizzando nel mio codice:

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

// il mio codice

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

Perché Google Play invia questo avviso riguardo SSL? È questo il mio problema di codice o problema di PayUMoney?

+0

Qual è stata la versione del sistema operativo che ha attivato questo problema? Anch'io sto affrontando lo stesso problema e la gente mi consiglia di fare ciò che hai fatto ... Sono confuso .. – San

+0

Risolto su http://stackoverflow.com/questions/36050741/webview-avoid-security-alert- from-google-play-upon-implementation-of-onreceiveds – BeyazBaron

risposta

-1

Il problema è nel codice. Quando chiami così handler.proceed();, rimuove in modo efficace tutta la sicurezza dalla tua connessione.

È necessario rimuovere il metodo onReceivedSslError. L'implementazione predefinita rifiuterà le connessioni non protette.

+0

Questa soluzione ha funzionato per te? Sto ricevendo lo stesso avviso nella mia Google Console. – YuDroid

3

Spero che non sia troppo tardi per questo .. che l'avviso riguarda il fatto che dovresti informare l'utente che sta andando a una pagina con certificato non valido, non dovresti procedere direttamente.

È possibile implment una finestra qualcosa di avviso simile a questo:

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

Questa è stata presa dalle risposte Sakim in questo link: Webview avoid security alert from google play upon implementation of onReceivedSslError

+1

Grazie mille –