0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Ngăn Chặn Tấn Công Man-in-the-Middle (MITM) Trên Ứng Dụng Android

Đăng vào 2 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTechAndroid

Trong thời đại công nghệ số hiện nay, việc bảo vệ thông tin người dùng khỏi các cuộc tấn công Man-in-the-Middle (MITM) trở nên vô cùng quan trọng, đặc biệt là trên nền tảng Android. Để xây dựng một ứng dụng Android an toàn, bạn cần áp dụng các phương pháp bảo mật hiệu quả trong giao tiếp mạng. Dưới đây là hướng dẫn chi tiết giúp bạn bảo vệ ứng dụng khỏi các cuộc tấn công MITM.

1. Sử Dụng HTTPS

Đầu tiên và quan trọng nhất, hãy đảm bảo rằng tất cả các giao tiếp mạng trong ứng dụng của bạn đều sử dụng HTTPS thay vì HTTP. HTTPS giúp mã hóa dữ liệu truyền tải giữa máy khách và máy chủ, từ đó ngăn chặn các kẻ tấn công can thiệp vào thông tin của bạn.

2. Thực Hiện SSL Pinning

SSL pinning là một biện pháp bảo mật mà ứng dụng của bạn sẽ kiểm tra tính hợp lệ của chứng chỉ SSL mà máy chủ cung cấp.

Hướng Dẫn Thực Hiện SSL Pinning Trong Android:

Sử Dụng Thư Viện OkHttp:

  1. Thêm thư viện OkHttp vào file build.gradle:

    implementation 'com.squareup.okhttp3:okhttp:4.9.0'

  2. Tạo một đối tượng OkHttpClient với chứng chỉ đã pin:

    Copy
    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" và SHA-256 hash bằng giá trị tương ứng của bạn. Bạn có thể sử dụng OpenSSL để lấy hash này.

Sử Dụng Retrofit:

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

    Copy
    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:

    Copy
    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

Hệ thống Android và OkHttp sẽ tự động xác thực chứng chỉ SSL, nhưng bạn cũng nên đảm bảo rằng chúng hợp lệ và không bị hết hạn. Bạn có thể thêm các biện pháp bảo mật bổ sung để nâng cao độ an toàn.

4. Sử Dụng Cấu Hình Bảo Mật Mạng

Nếu ứng dụng của bạn nhắm đến Android Nougat (API level 24) trở lên, sử dụng cấu hình bảo mật mạng để thiết lập quy tắc như bắt buộc sử dụng HTTPS và chỉ định các CA tin cậy.

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

    Copy
    <?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:

    Copy
    <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

Khi có thể, hãy tránh sử dụng WebView cho các hoạt động nhạy cảm. Nếu việc sử dụng WebView là cần thiết, hãy đảm bảo chỉ tải nội dung từ các nguồn tin cậy và tắt JavaScript nếu không thực sự 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 liên quan được cập nhật để ngăn ngừa các lỗ hổng bảo mật. Thực hiện kiểm tra mã nguồn và các phụ thuộc thường xuyên để tìm kiếm các bản cập nhật cần thiết.

7. Làm Rối Mã Ứng Dụng

Sử dụng công cụ như ProGuard hoặc R8 để làm rối mã ứng dụng, điều này làm khó khăn cho kẻ tấn công khi cố gắng giải mã và tìm ra các lỗ hổng.

8. Kiểm Tra Bảo Mật Định Kỳ

Cuối cùng, hãy thực hiện kiểm tra bảo mật và kiểm tra thâm nhập định kỳ để phát hiện và khắc phục các lỗ hổng trong ứng dụng của bạn.

Bằng cách tuân thủ theo các bước trên, bạn có thể nâng cao đáng kể mức độ bảo mật cho ứng dụng Android và bảo vệ người dùng của mình khỏi các cuộc tấn công MITM.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào