Cách giải quyết cảnh báo về Trình xử lý lỗi WebView SSL trong ứng dụng của bạn.

Bài viết này dành cho nhà phát triển có (các) ứng dụng sử dụng phương thức triển khai trình xử lý WebViewClient.onReceivedSslError theo cách không an toàn.

Điều gì đang xảy ra

Một hoặc nhiều ứng dụng của bạn có chứa phương thức triển khai trình xử lý onReceivedSslError theo cách không an toàn, khiến cho ứng dụng dễ bị kẻ trung gian tấn công. Kẻ tấn công có thể thay đổi nội dung bị ảnh hưởng của WebView, đọc dữ liệu truyền đi (chẳng hạn như thông tin đăng nhập) và thực thi mã bên trong ứng dụng bằng JavaScript. Vui lòng tham khảo thông báo trên Play ConsoleSau thời hạn ghi trên Play Console, chúng tôi có thể xóa mọi ứng dụng chưa khắc phục lỗ hổng bảo mật khỏi Google Play.

Việc cần làm​

  1. Đăng nhập vào Play Console và chuyển đến phần Cảnh báo để xem những ứng dụng bị ảnh hưởng và thời hạn giải quyết những vấn đề này.
  2. Cập nhật các ứng dụng bị ảnh hưởng và khắc phục lỗ hổng.
  3. Gửi phiên bản cập nhật của các ứng dụng bị ảnh hưởng.

Sau khi bạn gửi lại, chúng tôi sẽ xem xét lại ứng dụng của bạn. Quá trình này có thể mất vài giờ. Nếu ứng dụng vượt qua quy trình xem xét và được xuất bản thành công thì bạn không cần thực hiện thêm hành động nào. Nếu ứng dụng không vượt qua được quy trình xem xét thì phiên bản ứng dụng mới sẽ không được xuất bản và bạn sẽ nhận được thông báo qua email.

Thông tin chi tiết bổ sung

  1. Để khắc phục vấn đề này, vui lòng cập nhật mã ứng dụng của bạn để gọi SslErrorHandler.proceed() bất cứ khi nào chứng chỉ được máy chủ cung cấp đáp ứng yêu cầu của bạn. Trong trường hợp ngược lại, hãy gọi SslErrorHandler.cancel(). Vui lòng lưu ý các điểm sau đây khi kiểm tra tính hợp lệ của chứng chỉ:
    1. Một ứng dụng có thể bị gắn cờ nếu không thực hiện đủ các bước kiểm tra tính hợp lệ của chứng chỉ. Ví dụ: Việc chỉ kiểm tra giá trị trả về của getPrimaryError vẫn chưa đủ để xác định tính hợp lệ của chứng chỉ.

    2. Việc bỏ qua hầu hết các lỗi SSL mà SslError.getPrimaryError trả về là không an toàn. Xin lưu ý rằng  getPrimaryError trả về lỗi nghiêm trọng nhất trong một nhóm lỗi, vì vậy, nếu getPrimaryError() != SSL_UNTRUSTED là true (đúng), thì kết nối vẫn có thể chứa một lỗi SSL_UNTRUSTED trong nhóm lỗi.

  2. Nếu bạn đang sử dụng một thư viện của bên thứ ba gây ra vấn đề này, vui lòng thông báo cho bên thứ ba để cùng họ khắc phục.

Để biết thêm thông tin về trình xử lý lỗi SSL, hãy xem tài liệu hướng dẫn của chúng tôi trong Trung tâm trợ giúp dành cho nhà phát triển Android. Nếu có câu hỏi khác về mặt kỹ thuật, bạn có thể đăng lên https://www.stackoverflow.com/questions rồi gắn thẻ “android-security” và “SslErrorHandler”.

Mặc dù các vấn đề cụ thể này có thể không ảnh hưởng đến mọi ứng dụng sử dụng WebView SSL, nhưng tốt nhất là bạn nên cập nhật đầy đủ tất cả các bản vá bảo mật. Ứng dụng có lỗ hổng bảo mật khiến người dùng có nguy cơ bị lộ thông tin có thể xem là sản phẩm nguy hiểm, vi phạm Chính sách nội dung và mục 4.4 trong Thỏa thuận phân phối dành cho nhà phát triển.

Chúng tôi sẵn sàng trợ giúp

Nếu có câu hỏi kỹ thuật về lỗ hổng bảo mật, bạn có thể đăng lên Stack Overflow và gắn thẻ "android security". Để hiểu rõ hơn về các bước cần thực hiện để giải quyết vấn đề này, bạn có thể liên hệ với nhóm hỗ trợ nhà phát triển của chúng tôi.

Thông tin này có hữu ích không?

Chúng tôi có thể cải thiện trang này bằng cách nào?
false
Trình đơn chính
1325356551879653102
true
Tìm kiếm trong Trung tâm trợ giúp
true
true
true
true
true
5016068
false
false