Bảo mật hoạt động nhạy cảm

Tài liệu này trình bày chi tiết các cách giám sát các hoạt động nhạy cảm, chẳng hạn như hoạt động đăng nhập của người dùng và giao dịch mua hàng trực tuyến.

FLAG_SECURE

FLAG_SECURE là một cờ cửa sổ để yêu cầu Android không cho phép ảnh chụp màn hình hoặc hiện khung hiển thị cửa sổ trên một màn hình không an toàn (chẳng hạn như Truyền màn hình). Điều này rất hữu ích cho những ứng dụng cần bảo vệ thông tin nhạy cảm, chẳng hạn như ứng dụng ngân hàng hoặc trình quản lý mật khẩu. Khi một cửa sổ được gắn cờ bằng FLAG_SECURE, Android sẽ ngăn việc chụp ảnh màn hình và ngăn cửa sổ đó hiển thị trên màn hình không an toàn, chẳng hạn như TV hoặc máy chiếu. Việc này giúp bảo vệ thông tin đang hiển thị trong cửa sổ khỏi bị truy cập trái phép.

Cách điều này giúp giảm thiểu hành vi gian lận

Một ứng dụng hoặc thực thể độc hại có thể truy xuất ảnh chụp màn hình trong nền. Khi trạng thái ứng dụng chuyển sang chế độ nền, bạn có thể sử dụng FLAG_SECURE. Khi ảnh chụp màn hình được chụp, hình ảnh thu được sẽ trống.

FLAG_SECURE cũng hỗ trợ các trường hợp sử dụng tính năng chia sẻ màn hình từ xa. Không phải lúc nào ứng dụng độc hại này cũng truy xuất được ảnh chụp màn hình, các ứng dụng chia sẻ màn hình hợp lệ cũng thường được dùng trong các trường hợp gian lận.

Triển khai

Đối với các chế độ xem có thông tin mà bạn muốn được bảo vệ, hãy thêm đoạn mã sau:

Kotlin


window?.setFlags(
    WindowManager.LayoutParams.FLAG_SECURE,
    WindowManager.LayoutParams.FLAG_SECURE
)

Java


window.setFlags(
  WindowManager.LayoutParams.FLAG_SECURE,
  WindowManager.LayoutParams.FLAG_SECURE
);

Các phương pháp hay nhất

Điều quan trọng cần lưu ý là phương pháp này không đáng tin cậy trong việc ngăn chặn các cuộc tấn công lớp phủ. Trong một số trường hợp, tính năng này không dự đoán chính xác liệu tính năng ghi màn hình có đang hoạt động hay không, nhưng sẽ dùng cho hầu hết các trường hợp sử dụng. Để giảm thiểu các cuộc tấn công lớp phủ, hãy đọc phần tiếp theo về các quyền HIDE_OVERLAY_WINDOWS.

ẨN_OVERLAY_WINDOWS

HIDE_OVERLAY_WINDOWS là một quyền được thêm vào Android 12, giúp ứng dụng của bạn có thể chọn không vẽ lớp phủ ứng dụng trên đó. Trên Android 12, chúng tôi đã điều chỉnh để việc lấy quyền SYSTEM_ALERT_WINDOW trở nên khó khăn hơn, về cơ bản cho phép ứng dụng của bạn chặn lớp phủ khỏi các ứng dụng bên thứ ba.

Cách điều này giúp giảm thiểu hành vi gian lận

Khi bật quyền HIDE_OVERLAY_WINDOWS, bạn đang chọn không vẽ các lớp phủ ứng dụng ở đầu ứng dụng. Quyền này cung cấp một cơ chế bảo vệ chống lại các cuộc tấn công che giấu và Dagger.

Triển khai

Để bật quyền này, hãy thêm HIDE_OVERLAY_WINDOWS vào tệp kê khai của dự án.

Các phương pháp hay nhất

Tương tự như mọi quyền, bạn nên tin tưởng mọi ứng dụng lớp phủ ít nhất bằng với mức độ bạn tin tưởng ứng dụng khác trên thiết bị. Nói cách khác, ứng dụng của bạn không nên cho phép các ứng dụng khác vẽ lớp phủ trên đó, trừ phi bạn biết ứng dụng khác đó đáng tin cậy. Việc cho phép một ứng dụng vẽ lên trên các ứng dụng khác có thể nguy hiểm vì ứng dụng đó có thể đánh cắp mật khẩu hoặc đọc tin nhắn.