Chuyển đến nội dung chính

Giải quyết rắc rối khi sử sụng Cleartext trên Android Pie

 

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

Bài đăng phổ biến từ blog này

NHỮNG WIDGET THƯỜNG DÙNG TRONG FLUTTER

 https://baoflutter.com/nhung-widget-thuong-dung-trong-flutter/ Trong bài viết trước về  cách xây dựng màn hình ứng dụng Flutter , các bạn biết rằng các màn hình ứng dụng được tạo ra bởi các widget ghép lại với nhau. Vì vậy việc hiểu và sử dụng các Widget là rất quan trọng. Vì vậy trong bài viết này, tôi sẽ giới thiệu cho các bạn về những widget quan trọng trong Flutter. Hầu hết các Widget đều có các phần sau đây: + Đặc tính của Widget như : color, theme, height, weight, decoration, onTap, onPressed + Liên kết với các Widget khác với từ khoá: child, children, home hoặc body Ví dụ : 1 2 3 4 5 6 Container ( color : Colors . blue , height : 300 , weight : 300 , child : Text ( "Widget con" ) , ) Khi làm một số App cơ bản, bạn sẽ nắm chắc được cách sử dụng các Widget hay dùng. MaterialApp – Là widget rất liện lợi, cung cấp các widget cho việc xây dựng ứng dụng sử dụng thư viện Material Design UI của google. – Widget này được sử dụng trong hàm build đầu tiên của hầu hết các ứn...

Các bước cơ bản sử dụng Retrofit để thao tác với API và MVP

 Cài đặt  Retrofit //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' Cài đặt Gson implementation 'com.google.code.gson:gson:2.8.9' Cài thư viện Okhttp implementation 'com.squareup.okhttp3:okhttp:3.12.0' Sử dụng Gson ở trong project: 1. Tạo class App import android.app.Application ; import com.google.gson.Gson ; public class App extends Application { private static App mSelf ; private Gson mGSon ; public static App self () { return mSelf ; } @Override public void onCreate () { super .onCreate() ; mSelf = this; mGSon = new Gson() ; } public Gson getGSon () { return mGSon ; } } 2. Chỉnh file AndroidManifest: <? xml version ="1.0" encoding ="utf-8" ?> <manifest xmlns: android ="http://schemas.android.com/apk/res/android" xmlns: tools ="http://schemas.android....

Cấu trúc cơ bản layout trong Flutter