Google cung cấp một bộ API và dịch vụ để giúp bạn phát hiện xem ứng dụng của mình có đang chạy trong một môi trường an toàn và đáng tin cậy hay không. API Tính toàn vẹn của Play là thành phần chính, giúp kiểm tra để đảm bảo các lượt tương tác là chính thống bằng cách phát hiện những lượt tương tác tiềm ẩn rủi ro và gian lận. Ngoài tính toàn vẹn của ứng dụng và thiết bị, Play Integrity API hiện cung cấp thông tin về các rủi ro khi truy cập và hỗ trợ tiếp cận, Google Play Protect và hoạt động gần đây trên thiết bị. Để tăng cường chiến lược chống gian lận, nền tảng Android cung cấp các API cho những trường hợp cụ thể có thể liên quan đến ứng dụng của bạn.
API Tính toàn vẹn của Play
Play Integrity API cho phép bạn tìm hiểu về trạng thái bảo mật của thiết bị mà ứng dụng đang chạy. Điều này giúp bạn yên tâm rằng đúng người dùng đang truy cập vào thông tin nhạy cảm.
API này giúp bạn kiểm tra để đảm bảo các lượt tương tác và yêu cầu gửi tới máy chủ đến từ tệp nhị phân của ứng dụng chính thống trong một môi trường đáng tin cậy:
- Tệp nhị phân của ứng dụng chính thống: Xác định xem bạn có đang tương tác với tệp nhị phân chưa được sửa đổi mà Google Play biết hay không.
- Bản cài đặt chính thống từ Play: Xác định xem tài khoản người dùng hiện tại có được cấp phép hay không, tức là liệu người dùng đã cài đặt hoặc thanh toán cho ứng dụng/trò chơi trên Google Play chưa.
- Thiết bị Android chính hãng: Xác định xem ứng dụng của bạn có đang chạy trên một thiết bị Android chính hãng sử dụng Dịch vụ Google Play hay không.
- Không nhiễm phần mềm độc hại đã biết: Xác định xem Google Play Protect đã được bật hay chưa, cũng như liệu Google Play Protect có tìm thấy trên thiết bị này ứng dụng nào gây rủi ro hoặc nguy hiểm hay không.
- Rủi ro thấp khi các ứng dụng khác truy cập: Xác định xem các ứng dụng đang chạy khác có thể ghi lại màn hình hoặc điều khiển thiết bị và dữ liệu đầu vào vào ứng dụng của bạn hay không.
Cách này giúp giảm thiểu hành vi gian lận
Khi người dùng thực hiện một hành động quan trọng trong ứng dụng, bạn có thể gọi API Tính toàn vẹn của Play. Nếu không, máy chủ phụ trợ của ứng dụng có thể quyết định việc nên làm để ngăn chặn các cuộc tấn công và hành vi lừa đảo. Ví dụ: bạn có thể yêu cầu người dùng xác minh thêm hoặc từ chối quyền truy cập vào chức năng nhạy cảm.

Rủi ro truy cập ứng dụng
Tín hiệu rủi ro truy cập ứng dụng được ra mắt để giúp bạn đánh giá xem các ứng dụng khác trên thiết bị có thể xem và ghi lại màn hình khi ứng dụng của bạn đang chạy hoặc truy cập vào ứng dụng của bạn bằng quyền hỗ trợ tiếp cận hay không. Các ứng dụng hỗ trợ tiếp cận đã xác minh sẽ tự động được loại trừ khỏi những kết quả này. Nhờ tính năng đánh giá rủi ro khi truy cập vào ứng dụng, nhà phát triển có thể bảo vệ các ứng dụng của họ mà vẫn đảm bảo quyền riêng tư của người dùng, vì ứng dụng yêu cầu không lấy thông tin nhận dạng của các ứng dụng đã cài đặt và kết quả không được liên kết với giá trị nhận dạng của người dùng hoặc thiết bị.
Nhờ nỗ lực hợp tác này, chúng tôi có thể thu thập những tín hiệu cần thiết để có được thông tin chi tiết hơn nhằm bảo vệ khách hàng một cách hiệu quả hơn.
– Nubank, đối tác tiếp cận sớm
Tính năng đánh giá rủi ro truy cập ứng dụng có nhiều cấp độ rủi ro:
- Phản hồi chụp màn hình có nghĩa là các ứng dụng khác đang chạy có thể chụp màn hình.
- Phản hồi kiểm soát có nghĩa là các ứng dụng khác đang chạy có thể kiểm soát thiết bị, do đó, cả hai ứng dụng này đều có thể chụp màn hình và kiểm soát dữ liệu đầu vào vào ứng dụng của bạn.
Thực thi tính năng đánh giá rủi ro truy cập ứng dụng
Xác định các hành động có giá trị cao/nhạy cảm trong ứng dụng hoặc trò chơi để bảo vệ bằng API Tính toàn vẹn của Play, thay vì từ chối quyền truy cập ngay lập tức. Khi có thể, hãy thử thách lưu lượng truy cập rủi ro trước khi cho phép các hành động có giá trị cao tiếp tục. Ví dụ: khi tính năng đánh giá rủi ro truy cập ứng dụng cho biết rằng một ứng dụng đang chạy có thể ghi lại màn hình, hãy yêu cầu người dùng tắt hoặc gỡ cài đặt các ứng dụng có thể ghi lại màn hình trước khi cho phép họ tiếp tục sử dụng chức năng mà bạn muốn bảo vệ.
Bảng này chứa một số ví dụ về kết quả:
| Ví dụ về phản hồi đối với kết quả đánh giá rủi ro truy cập ứng dụng | Diễn giải |
|---|---|
appsDetected:["KNOWN_INSTALLED"]
|
Chỉ có những ứng dụng đã cài đặt do Google Play nhận dạng hoặc do nhà sản xuất thiết bị tải trước lên phân vùng hệ thống. Không có ứng dụng nào đang chạy dẫn đến kết quả ghi lại, kiểm soát hoặc lớp phủ. |
appsDetected:["KNOWN_INSTALLED","UNKNOWN_INSTALLED","UNKNOWN_CAPTURING"]
|
Có những ứng dụng do Google Play cài đặt hoặc do nhà sản xuất thiết bị tải trước lên phân vùng hệ thống. Có những ứng dụng khác đang chạy và được cấp quyền có thể dùng để xem màn hình hoặc ghi lại các dữ liệu đầu vào và đầu ra khác. |
appsDetected:["KNOWN_INSTALLED","KNOWN_CAPTURING","UNKNOWN_INSTALLED","UNKNOWN_CONTROLLING"]
|
Có những ứng dụng trên Play hoặc ứng dụng hệ thống đang chạy đã bật các quyền có thể dùng để xem màn hình hoặc ghi lại các dữ liệu đầu vào và đầu ra khác. Ngoài ra, còn có các ứng dụng khác đang chạy có quyền có thể dùng để điều khiển thiết bị và trực tiếp điều khiển dữ liệu đầu vào vào ứng dụng của bạn. |
appAccessRiskVerdict: {}
|
Tính năng đánh giá rủi ro truy cập ứng dụng không được đánh giá vì thiếu một yêu cầu cần thiết. Ví dụ: thiết bị không đủ tin cậy. |
Tín hiệu Play Protect
Play Protect Signal cho ứng dụng của bạn biết liệu Play Protect đã bật hay chưa và liệu dịch vụ này có phát hiện thấy ứng dụng gây hại nào đã biết được cài đặt trên thiết bị hay không.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Nếu phần mềm độc hại là một mối lo ngại cụ thể đối với ứng dụng của bạn hoặc dữ liệu của người dùng, bạn có thể kiểm tra kết quả này và yêu cầu người dùng bật Play Protect hoặc xoá các ứng dụng gây hại trước khi tiếp tục.

playProtectVerdict có thể có một trong những giá trị sau đây:
| Kết quả | Giải thích | Việc nên làm |
|---|---|---|
|
Play Protect đã bật và không phát hiện thấy bất kỳ vấn đề nào về ứng dụng trên thiết bị. |
Play Protect đang bật và không phát hiện thấy vấn đề nên người dùng không cần thực hiện hành động nào. |
|
Play Protect đã bật nhưng chưa quét. Có thể thiết bị hoặc ứng dụng Cửa hàng Play mới được đặt lại gần đây. |
Play Protect đang bật và không phát hiện thấy vấn đề nên người dùng không cần thực hiện hành động nào. |
|
Play Protect đã bị tắt. |
Play Protect đang bật và không phát hiện thấy vấn đề nên người dùng không cần thực hiện hành động nào. |
|
Play Protect đã bật và phát hiện thấy các ứng dụng có khả năng gây hại được cài đặt trên thiết bị này. |
Tuỳ thuộc vào khả năng chấp nhận rủi ro, bạn có thể yêu cầu người dùng chạy Play Protect và xử lý các cảnh báo của Play Protect. Nếu người dùng không thể đáp ứng các yêu cầu này, bạn có thể chặn họ thao tác trên máy chủ. |
|
Play Protect đã bật và phát hiện thấy các ứng dụng nguy hiểm được cài đặt trên thiết bị này. |
Tuỳ thuộc vào khả năng chấp nhận rủi ro, bạn có thể yêu cầu người dùng chạy Play Protect và xử lý các cảnh báo của Play Protect. Nếu người dùng không thể đáp ứng các yêu cầu này, bạn có thể chặn họ thao tác trên máy chủ. |
|
Kết quả xác minh của Play Protect chưa được đánh giá. Điều này có thể xảy ra vì một vài lý do, chẳng hạn như:
|
Hoạt động gần đây trên thiết bị
Bạn cũng có thể chọn tham gia tính năng hoạt động trên thiết bị gần đây. Tính năng này cho biết số lần ứng dụng của bạn đã yêu cầu một mã thông báo về tính toàn vẹn trên một thiết bị cụ thể trong 1 giờ qua. Bạn có thể sử dụng hoạt động gần đây trên thiết bị để bảo vệ ứng dụng khỏi các thiết bị hoạt động quá mức, bất thường, vốn có thể là dấu hiệu cho thấy thiết bị đang bị tấn công. Bạn có thể quyết định mức độ tin cậy cho mỗi cấp hoạt động gần đây trên thiết bị, dựa trên số lần bạn dự kiến ứng dụng của mình được cài đặt trên một thiết bị thông thường để yêu cầu một mã thông báo về tính toàn vẹn mỗi giờ.
Nếu bạn chọn nhận recentDeviceActivity, trường deviceIntegrity sẽ có 2 giá trị:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
Trước tiên, bạn nên kiểm tra dữ liệu để xem mức hoạt động trên thiết bị thông thường đối với ứng dụng của bạn trên tất cả các thiết bị. Sau đó, bạn có thể quyết định cách ứng dụng của mình phản hồi khi một thiết bị đưa ra quá nhiều yêu cầu. Nếu hoạt động này có mức sử dụng hơi cao, bạn có thể yêu cầu người dùng thử lại sau. Nếu hoạt động rất cao, bạn có thể muốn thực hiện biện pháp thực thi mạnh mẽ hơn.
Yêu cầu thông thường so với yêu cầu kiểu cũ
Trong quá trình triển khai Play Integrity, bạn cần cân nhắc 2 loại yêu cầu. Trong hầu hết các trường hợp, bạn nên sử dụng các yêu cầu chuẩn để nhận được phản hồi nhanh nhất. Bạn nên sử dụng yêu cầu kiểu cũ khi cần có một yêu cầu mới được tạo dựa trên bản ghi chứng thực thiết bị.
Yêu cầu kiểu cũ |
Yêu cầu thông thường |
|---|---|
Yêu cầu mất nhiều thời gian hơn và nên ít được thực hiện hơn. Ví dụ: thỉnh thoảng thực hiện một lần để kiểm tra xem một hành động nhạy cảm hoặc có giá trị cao có phải là thật hay không. Ít sử dụng. |
Các yêu cầu có độ trễ thấp và có thể được dùng theo yêu cầu. Một yêu cầu thông thường bao gồm 2 phần:
Sử dụng theo yêu cầu. |
Đọc tài liệu về Play Integrity để biết thêm thông tin về các yêu cầu chuẩn và kiểu cũ.
Triển khai
Cách bắt đầu sử dụng API Tính toàn vẹn của Play:
- Bật tính năng phản hồi của Play Integrity API trong Google Play Console và liên kết với một dự án trên Google Cloud.
- Tích hợp Play Integrity API vào ứng dụng.
- Quyết định cách bạn sẽ xử lý kết quả.
Theo mặc định, Play Integrity API cho phép tối đa 10.000 yêu cầu mỗi ứng dụng mỗi ngày. Để bày tỏ sự quan tâm đến việc tăng số yêu cầu tối đa hằng ngày, hãy làm theo các hướng dẫn này. Để đủ điều kiện tăng mức tối đa hằng ngày cho số lượng yêu cầu, thì ngoài các kênh phân phối khác, ứng dụng của bạn phải triển khai API Tính toàn vẹn của Play một cách chính xác và có mặt trên Google Play.
Những điều cần lưu ý đối với Play Integrity API
- Bạn cần phải xử lý các lỗi trong phản hồi của API Tính toàn vẹn của Play một cách thích hợp. Hãy làm theo hướng dẫn tại đây về chiến lược thử lại và thực thi dựa trên mã lỗi.
- API Tính toàn vẹn của Play cung cấp các công cụ kiểm thử cho phản hồi.
- Để xem kết quả về tính toàn vẹn trên thiết bị, hãy làm theo các bước sau.
- Đọc các điểm cần cân nhắc về bảo mật này để biết các phương pháp được đề xuất khi sử dụng Play Integrity API.
Tự động bảo vệ tính toàn vẹn (API >= 23)
Tính năng tự động bảo vệ tính toàn vẹn là một dịch vụ bảo vệ mã chống can thiệp, giúp bảo vệ ứng dụng của bạn khỏi hành vi vi phạm tính toàn vẹn dưới hình thức sửa đổi và phân phối lại trái phép. Tính năng này hoạt động mà không cần kết nối dữ liệu, đồng thời nhà phát triển không cần làm gì trước khi kiểm thử và không cần tích hợp vào máy chủ phụ trợ.
Cách này giúp giảm thiểu hành vi gian lận
Khi bạn bật tính năng tự động bảo vệ tính toàn vẹn, Google Play sẽ thêm các quy trình kiểm tra vào mã nguồn của ứng dụng và dùng phương thức làm rối mã nguồn nâng cao và kỹ thuật chống đảo ngược để gây khó khăn cho việc loại bỏ những quy trình kiểm tra đó. Trong thời gian chạy, tính năng bảo vệ sẽ kiểm tra xem ứng dụng của bạn có bị can thiệp hoặc phân phối lại hay không:
- Nếu quy trình kiểm tra cho thấy ứng dụng không được cài đặt từ Google Play, người dùng sẽ thấy lời nhắc tải ứng dụng của bạn qua Google Play
- Nếu quy trình kiểm tra cho thấy có sửa đổi, ứng dụng sẽ không chạy
Việc này giúp bảo vệ người dùng khỏi các phiên bản đã sửa đổi của ứng dụng.
Triển khai
Hiện tại, tính năng Tự động bảo vệ tính toàn vẹn chỉ dành cho một số Đối tác chọn lọc của Play. Liên hệ với Nhóm hỗ trợ nhà phát triển của Google Play nếu bạn không thấy tính năng này trong Google Play Console và muốn bày tỏ sự quan tâm đến việc được cấp quyền truy cập.
Bạn có thể bật tính năng bảo vệ khi tạo bản phát hành hoặc trên trang Được bảo vệ bằng Play. Tính năng Tự động bảo vệ tính toàn vẹn yêu cầu ứng dụng của bạn sử dụng Tính năng ký ứng dụng của Play.
Hãy nhớ kiểm thử ứng dụng được bảo vệ trước khi phát hành công khai.
Những điều cần lưu ý
- Đừng phát hành phiên bản ứng dụng chưa được bảo vệ
- Cẩn thận khi kết hợp các giải pháp bảo vệ chống giả mạo
- Kiểm thử ứng dụng được bảo vệ trước khi phát hành công khai
- Theo dõi số liệu thống kê như bình thường để phát hiện mọi trường hợp tăng số lượng sự cố
- Bạn có thể báo cáo các phiên bản bị bẻ khoá của ứng dụng cho Google Play