II. Nội dung chính
Cleartext trong dòng log trên có ý nghĩa gì? Cleartext là bất kỳ thông tin nào được truyền (transmitted) hay được lưu trữ (stored) mà không được mã hóa.
Khi app giao tiếp với server bằng cách sử dụng cleartext (ví dụ như HTTP) sẽ làm tăng nguy cơ bị rò rỉ và giả mạo nội dung. Các bên thứ ba có thể thêm bớt dữ liệu trái phép hoặc trích xuất thông tin của người dùng. Đó là lý do tại sao chúng ta được khuyến khích sử dụng các phương thức bảo mật thông tin (ví dụ như HTTPS thay thế cho HTTP). Tuy nhiên, trong trường bắt buộc phải sử dụng cleartext thì chúng ta có thể fix bằng 2 cách:
1. Sử dụng useCleartextTraffic giá trị là "true" trong AndroiManifest
- Thuộc tính useCleartextTraffic đã được thêm vào từ Android 6.0. Với Android Pie thì thuộc tính này có giá trị mặc định là “false”, do đó chúng ta cần phải cấu hình lại cho thuộc tính này để có thể sử dụng cleartext.
<application
android:usesCleartextTraffic="true"
...
- Đây là cách khắc phục nhanh nhất, tuy nhiên nó lại gây ra mối đe dọa về tính toàn vẹn dữ liệu vì không giới hạn phạm vi của cleartext. Một giải pháp khác tốt hơn được giới thiệu từ Android 7.0 là cấu hình file network_security_config.xml. Việc cấu hình file này sẽ cho phép sử dụng cleartext từ một domain cụ thể.
2. Cấu hình network_security_config.xml
a. Thêm file network_security_config.xml trong mục res/xml
b. Thêm cấu hình domain và đặt giá trị “true” cho thuộc tính cleartextTrafficPermitted
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your_domain.com</domain>
</domain-config>
</network-security-config>
c. Thêm file network_security_config.xml vào AndroidManifest
<application
android:name=".MyApplication"
android:networkSecurityConfig="@xml/network_security_config"
...
III. Kết
- Với nội dung bài viết này, mình đã giới thiệu 2 giải pháp để giải quyết issue liên quan đến cleartext trên Android Pie. Tuy nhiên, tốt hơn hết chúng nên sử dụng phương thức bảo mật bổ sung, dùng HTTPS thay thế cho HTTP để đạt hiệu quả cao hơn. Hy vọng với bài viết này các bạn sẽ có thêm một ít kiến thức để giải quyết vấn đề này một cách nhanh chóng.
Nhận xét
Đăng nhận xét