2016-03-01 21 views
8

Tôi sử dụng SDK gorbin/ASNE trong ứng dụng của mình. Gần đây tôi đã nhận được một email từ Google với chủ đề sau: "Cảnh báo Google Play: Lỗ hổng trình xử lý lỗi SSL". Trong email này, Google giải thích rằng ứng dụng của tôi có ["triển khai không an toàn cho trình xử lý WebViewClient.onReceivedSslError"]Android Google Play Cảnh báo: Lỗ hổng xử lý lỗi SSL

và họ khuyên tôi ["Để xử lý xác thực chứng chỉ SSL đúng cách, hãy thay đổi mã của bạn để gọi SslErrorHandler.proceed () bất cứ khi nào chứng chỉ do máy chủ đáp ứng mong đợi của bạn, và gọi SslErrorHandler.cancel() nếu không "]

đây là thực hiện của tôi về phương pháp:

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

bất kỳ sự giúp đỡ xin vui lòng?

+1

Có rất nhiều câu hỏi tương tự, vui lòng [xem trước] (http://stackoverflow.com/search?tab=newest&q=onReceivedSslError). –

Trả lời

8

giải pháp là để loại bỏ onReceivedSslError

+0

Tôi theo sau bởi cam kết này: https://github.com/gorbin/ASNE/commit/85dadbfd7b31346b11ce642d4224e12561c8b169. –

9

Để xử lý đúng đắn SSL xác nhận chứng chỉ, thay đổi mã của bạn để gọi SslErrorHandler.proceed() bất cứ khi nào chứng chỉ do máy chủ đáp ứng mong đợi của bạn, và gọi SslErrorHandler.cancel() khác .

Ví dụ: tôi thêm hộp thoại cảnh báo để làm cho người dùng đã xác nhận và dường như Google không còn hiển thị cảnh báo nữa.

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

Sau đó thay đổi nó sẽ không hiển thị warning.Referencec link

+0

Đây phải là câu trả lời được chấp nhận. +1. – WebViewer

1

Tôi đã sử dụng backendless phiên bản cũ thư viện biên dịch 'com.backendless: backendless: 3.0.11' vì vậy tôi cập nhật phiên bản mới nhất biên dịch 'com.backendless: backendless: 3.0.24' và sự cố được giải quyết.

Các vấn đề liên quan