7

Sto cercando di capire e risolvere il motivo per cui la mia app è stata respinta. So che si tratta di SSL, ma non riesco a trovare quale dipendenza lo stia causando. sto usando la successiva messa a punto:Console di sviluppo di Google Play rifiutata Aggiornamento dell'applicazione

  1. Android N (24)
  2. tessuto.
  3. MixPanel.
  4. Quickblox.
  5. Crashlytics
  6. Analytics.

Qualsiasi aiuto sarebbe apprezzato.


Aggiornamento: Questo è dalla sezione avvisi

allarme sicurezza

L'applicazione ha un'implementazione non sicura del gestore WebViewClient.onReceivedSslError. Nello specifico, l'implementazione ignora tutti gli errori di convalida dei certificati SSL, rendendo la tua app vulnerabile agli attacchi man-in-the-middle. Un utente malintenzionato può 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. Per gestire correttamente la convalida del certificato SSL, modificare il codice per richiamare SslErrorHandler.proceed() ogni volta che il certificato presentato dal server soddisfa le proprie aspettative e invocare SslErrorHandler.cancel() in caso contrario. Un avviso e-mail contenente l'app o le classi interessate è stato inviato all'indirizzo del tuo account sviluppatore. Affrontare quanto prima questa vulnerabilità e incrementare il numero di versione dell'APK aggiornato. Per ulteriori informazioni sul gestore degli errori SSL, consulta la nostra documentazione nel Centro assistenza per gli sviluppatori. Per altre domande tecniche, puoi postare su https://www.stackoverflow.com/questions e utilizzare i tag "android-security" e "SslErrorHandler". Se utilizzi una libreria di terze parti responsabile, notifica la terza parte e collabora con loro per risolvere il problema . Per confermare che l'aggiornamento è stato eseguito correttamente, carica la versione aggiornata nella Console per gli sviluppatori e ricontrolla dopo cinque ore. Se l'app non è stata aggiornata correttamente, verrà visualizzato un avviso. Si prega di notare, mentre questi problemi specifici potrebbero non interessare ogni app che utilizza SSL WebView, è meglio rimanere aggiornati su tutte le patch di sicurezza. Le app con vulnerabilità che espongono gli utenti al rischio di compromissione possono essere considerate in violazione delle nostre norme sul comportamento malevolo e della sezione 4.4 del Contratto di distribuzione per gli sviluppatori. Assicurati che tutte le app pubblicate siano conformi al Contratto di distribuzione degli sviluppatori e alle Norme del programma per gli sviluppatori. In caso di domande o dubbi, contatta il nostro team di assistenza tramite il Centro assistenza per gli sviluppatori di Google Play. riguarda l'APK versione 2.

+0

Stai ricevendo il messaggio "La tua app utilizza un'implementazione non sicura del messaggio X509TrustManager [...]"? Se è così, posterò una correzione. In caso contrario, indica quale messaggio hai ricevuto come motivo per cui la tua app è stata respinta. – thomaspsk

+0

Normalmente vorrebbe andare passo dopo passo in questo rimuovendo le dipendenze e aggiungendole di nuovo una alla volta per essere sicuro di cogliere la radice del problema – Eenvincible

+1

dare un'occhiata a http://stackoverflow.com/questions/36050741/ webview-avoid-security-alert-da-google-play-upon-implementation-of-onreceiveds – StarsSky

risposta

1

Il problema era BackEndless dopo che la versione di aggiornamento lo ha corretto.

+0

puoi spiegarlo più dettagliatamente? –

1

È necessario aggiornare il gestore webViewClient come descritto di seguito. Se nella tua applicazione non hai usato webview con onReceivedSslError(), verifica la versione più recente dell'SDK utilizzata per ottenere la versione aggiornata in base alla nuova politica di sicurezza di Google.

Per gestire correttamente la convalida del certificato SSL, modificare il codice per richiamare SslErrorHandler.proceed() ogni volta che il certificato presentato dal server soddisfa le proprie aspettative e richiamare SslErrorHandler.cancel() in caso contrario.

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 queste modifiche non mostrerà avviso.