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

Kích thước icon cho app Android và công cụ tạo icon của Google

Để hiển thị chuẩn theo các size màn hình thì chúng ta sẽ theo các kích thước sau: 36 × 36 (ldpi) – Low 48 × 48 (mdpi) – Medium 72 × 72 (hdpi) – High 96 × 96 (x-hdpi) – x-high 144 × 144 (xx-hdpi) 192 × 192 (xxx-hdpi) 512 × 512 (Google Play store) -> Kích thước này để làm ảnh demo cho App khi upload lên store. Khi tạo icon launcher cho app nếu tạo bằng các  Launcher icon generator  cửa Google thì khi cài vào điện thoại nó sẽ bé hơn so với các app khác vì google tự động cho thêm padding vào icon. Tránh điều này thì nên tự thiết kế bằng Photoshop sau đó dùng  cái này  để tạo thì sẽ to và đẹp hơn, nó tạo nhanh và đủ các kích thước chuẩn như bên trên kia. Nếu bạn muốn bo góc thì cũng làm bo góc ở trong photoshop trước sau đó mới dùng công cụ bên trên. Kiến thức liên quan đến đơn vị đo trong Android: pixel có thể hiểu là số điểm ảnh có trong 1 dot có hình vuông vì là ảnh bitmap mà. Ảnh đen trắng binary image thì 1 dot = 1 px = 1 bit (chỉ có trạng thá...

Get You Last known Location & Current Location using FusedLocationProviderClient

NOVEMBER 30, 2017 Get You Last known Location & Current Location using FusedLocationProviderClient        I would like to cover very basic and simple example of retreiving last known location & Current Location  using Fused location API.  I have written many example for fused location API in my previous posts but in this post i will show how to get retrieve the location  without implementing Google Api Client . All these magics happen after the release of version  11.0.0 of Google Play services SDK. FusedLocationProviderApi is Deprecated We have previously used following way to retrieve the last known location. mLastLocation  =  LocationServices. FusedLocationApi . getLastLocation ( mGoogleApiClient ) ; We no need to define LocationServices. FusedLocationApi  anymore. it is deprecated. It will be removed in the future release. Instead You can use LocationServi...

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