2016-03-01 3 views
8

Я использую gorbin/ASNE SDK в своем приложении. Недавно я получил электронное письмо от Google со следующим вопросом: «Предупреждение в Google Play: уязвимость обработчика ошибок SSL». В этом письме Google объясняет, что у моего приложения есть [«небезопасная реализация обработчика WebViewClient.onReceivedSslError»]android Google Play Предупреждение: Уязвимость SSL-обработчика

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

вот моя реализация метода:

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

любая помощь, пожалуйста?

+1

Есть много похожих вопросов, пожалуйста [посмотрите сначала] (http://stackoverflow.com/search?tab=newest&q=onReceivedSslError). –

ответ

8

решение удалить onReceivedSslError

+0

После этого я совершил следующее: https://github.com/gorbin/ASNE/commit/85dadbfd7b31346b11ce642d4224e12561c8b169. –

9

Чтобы правильно обработать проверку сертификата 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(); 
} 

После этого изменения не покажет warning.Referencec link

+0

Это должен быть принятый ответ. +1. – WebViewer

1

Я использовал backendless библиотеки старой версии компиляции 'com.backendless: backendless: 3.0.11' так я обновить до последней версии компиляции 'com.backendless: backendless: 3.0.24' и проблема решена.

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