- vừa được xem lúc

Một số cách ngăn chặn tấn công MITM đối với Android

0 0 13

Người đăng: Đoàn Phương

Theo Viblo Asia

Để tạo kết nối an toàn trong ứng dụng Android của bạn và ngăn chặn các cuộc tấn công Man-in-the-Middle (MITM), bạn nên tuân thủ các phương pháp tốt nhất để triển khai giao tiếp mạng an toàn. Dưới đây là hướng dẫn chi tiết về cách thực hiện điều này:

1. Sử dụng HTTPS

Đảm bảo tất cả các giao tiếp mạng của bạn đều sử dụng HTTPS thay vì HTTP. HTTPS mã hóa dữ liệu truyền giữa máy khách và máy chủ, ngăn chặn các cuộc tấn công MITM.

2. Thực hiện SSL Pinning

SSL pinning là việc gắn kết chứng chỉ SSL của máy chủ với ứng dụng của bạn. Điều này ngăn chặn kẻ tấn công sử dụng chứng chỉ bị xâm nhập hoặc CA giả mạo để chặn dữ liệu của bạn.

Cách thực hiện SSL Pinning trong Android:

Sử dụng OkHttp (thư viện HTTP client phổ biến cho Android):

  1. Thêm dependency vào file build.gradle của bạn:

    implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    
  2. Tạo một OkHttpClient tùy chỉnh với chứng chỉ đã pin:

    import okhttp3.CertificatePinner;
    import okhttp3.OkHttpClient; public class MyHttpClient { public OkHttpClient getClient() { CertificatePinner certificatePinner = new CertificatePinner.Builder() .add("yourdomain.com", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") .build(); return new OkHttpClient.Builder() .certificatePinner(certificatePinner) .build(); }
    }
    
  3. Thay thế "yourdomain.com" bằng domain của máy chủ bạn và hash bằng SHA-256 hash của chứng chỉ máy chủ. Bạn có thể lấy SHA-256 hash bằng cách sử dụng các công cụ như OpenSSL.

Sử dụng Retrofit (HTTP client an toàn và hiệu quả cho Android và Java):

  1. Thêm các dependency Retrofit và OkHttp vào build.gradle của bạn:

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    
  2. Tạo một instance Retrofit với OkHttpClient đã pin:

    import retrofit2.Retrofit;
    import retrofit2.converter.gson.GsonConverterFactory; public class MyRetrofitClient { public Retrofit getRetrofit() { OkHttpClient client = new MyHttpClient().getClient(); return new Retrofit.Builder() .baseUrl("https://yourdomain.com") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build(); }
    }
    

3. Xác thực Chứng chỉ SSL

Đảm bảo rằng các chứng chỉ SSL là hợp lệ và không bị hết hạn. Theo mặc định, hệ thống Android và OkHttp xử lý việc xác thực chứng chỉ, nhưng bạn có thể thêm các biện pháp bổ sung nếu cần thiết.

4. Sử dụng Cấu hình Bảo mật Mạng

Đối với các ứng dụng nhắm đến Android Nougat (API level 24) hoặc cao hơn, bạn có thể sử dụng tính năng Network Security Configuration để cấu hình các cài đặt bảo mật như bắt buộc sử dụng HTTPS và chỉ định các CA tin cậy trực tiếp trong file tài nguyên.

  1. Tạo một file XML trong res/xml/network_security_config.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config> <domain-config cleartextTrafficPermitted="false"> <domain includeSubdomains="true">yourdomain.com</domain> <pin-set expiration="2025-01-01"> <pin digest="SHA-256">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</pin> </pin-set> </domain-config>
    </network-security-config>
    
  2. Tham chiếu file này trong AndroidManifest.xml:

    <application ... android:networkSecurityConfig="@xml/network_security_config"> ...
    </application>
    

5. Tránh Sử dụng WebView cho Các Hoạt động Nhạy Cảm

Nếu có thể, tránh sử dụng WebView cho các hoạt động nhạy cảm, vì nó có thể khó bảo mật hơn. Nếu bắt buộc phải sử dụng WebView, đảm bảo rằng bạn chỉ tải nội dung từ các nguồn tin cậy và tắt JavaScript nếu không cần thiết.

6. Cập Nhật Bảo Mật Thường Xuyên

Giữ cho ứng dụng của bạn và tất cả các thư viện được cập nhật để bảo vệ chống lại các lỗ hổng đã biết. Thường xuyên xem xét mã nguồn và các phụ thuộc để tìm kiếm các bản cập nhật bảo mật.

7. Làm Rối Mã

Làm rối mã của ứng dụng bằng cách sử dụng ProGuard hoặc R8 để làm khó khăn cho kẻ tấn công khi muốn dịch ngược ứng dụng và tìm ra các lỗ hổng.

8. Kiểm Tra Bảo Mật Thường Xuyên

Thường xuyên thực hiện kiểm tra bảo mật và kiểm tra thâm nhập để xác định và khắc phục các lỗ hổng trong ứng dụng của bạn.

Bằng cách tuân theo các bước này, bạn có thể cải thiện đáng kể bảo mật cho ứng dụng Android của mình và bảo vệ nó chống lại các cuộc tấn công MITM.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 211

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 101

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315