7

Я пытаюсь понять и исправить, почему мое приложение отклонено. Я знаю, что это протокол SSL, но я не могу найти, какая зависимость вызывает его. Я использую следующую установку:Консоль разработчика Google Play отклонила мое обновление приложения

  1. Android N (24)
  2. ткани.
  3. MixPanel.
  4. Quickblox.
  5. Crashlytics
  6. Аналитика.

Любая помощь будет оценена по достоинству.


Update: Это из секции предупреждений

оповещение безопасности

Ваше приложение имеет небезопасную реализацию обработчика WebViewClient.onReceivedSslError. В частности, реализация игнорирует все ошибки проверки сертификата SSL, делая ваше приложение уязвимым для атак типа «человек в середине». Злоумышленник может изменить содержимое затронутого WebView, прочитать переданные данные (например, учетные данные для входа) и выполнить код внутри приложения с помощью JavaScript. Чтобы правильно обрабатывать сертификаты SSL, измените свой код, чтобы вызывать SslErrorHandler.proceed(), когда сертификат, представленный сервером, соответствует вашим ожиданиям, и вызовите SslErrorHandler.cancel() в противном случае. На ваш адрес учетной записи разработчика отправлено уведомление по электронной почте, содержащее затронутые приложения и классы (ы). Просьба устранить эту уязвимость как можно скорее и увеличить номер версии обновленного APK. Дополнительные сведения о обработчике ошибок SSL см. В нашей документации в Справочном центре разработчика. По другим техническим вопросам вы можете отправить сообщение https://www.stackoverflow.com/questions и использовать теги «android-security» и «SslErrorHandler». Если вы используете стороннюю библиотеку, которая отвечает за это, сообщите об этом третьему лицу и поработайте с ними для решения проблемы. , Чтобы подтвердить, что вы обновили его правильно, загрузите обновленную версию в консоль разработчика и вернитесь через пять часов. Если приложение не было правильно обновлено, появится предупреждение. Обратите внимание, что, хотя эти конкретные проблемы могут не повлиять на каждое приложение, использующее WebView SSL, лучше всего следить за всеми исправлениями безопасности. Приложения с уязвимостями, которые подвергают пользователей риску компромисса, могут рассматриваться в нарушение нашей политики злонамеренного поведения и раздела 4.4 Соглашения о распространении программного обеспечения. Пожалуйста, убедитесь, что все опубликованные приложения соответствуют Соглашению о распространении программного обеспечения и Политике программы разработчиков. Если у вас есть вопросы или проблемы, обратитесь в нашу службу поддержки через Справочный центр разработчика Google Play. Влияет на версию APK 2.

+0

Получаете ли вы сообщение «Ваше приложение использует небезопасную реализацию сообщения X509TrustManager [...]»? Если это так, я отправлю исправление. Если нет, укажите, какое сообщение вы получили в качестве причины отклонения вашего приложения. – thomaspsk

+0

Обычно вам нужно идти шаг за шагом, удаляя зависимости, а затем добавляя их по одному за раз, чтобы убедиться, что вы поймаете корень проблемы. – Eenvincible

+1

взгляните на http://stackoverflow.com/questions/36050741/ – StarsSky

ответ

1

Проблема была в обратном порядке после исправления версии исправления.

+0

не могли бы вы объяснить это более подробно? –

1

Необходимо обновить обработчик WebViewClient, как описано ниже. Если в вашем приложении вы не использовали webview с onReceivedSslError(), проверьте, используете ли вы последнюю версию SDK для обновления версии в соответствии с новой политикой безопасности Google.

Чтобы правильно обработать проверку сертификатов SSL, измените свой код, чтобы вызывать SslErrorHandler.proceed(), когда сертификат, представленный сервером, соответствует вашим ожиданиям и вызывает в противном случае SslErrorHandler.cancel().

Например, я добавляю диалоговое окно с предупреждением, чтобы пользователь подтвердил и, похоже, Google больше не показывает предупреждение.

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

После этого изменения не будут отображаться предупреждения.

 Смежные вопросы

  • Нет связанных вопросов^_^