Tổng quan về API Tính toàn vẹn của Play

API Tính toàn vẹn của Play giúp bạn kiểm tra để đảm bảo các hành động của người dùng và yêu cầu gửi tới máy chủ đến từ ứng dụng chính thống của bạn, được cài đặt qua Google Play và chạy trên một thiết bị chính hãng chạy hệ điều hành Android. Bằng cách phát hiện các hoạt động tương tác có rủi ro (chẳng hạn như hoạt động từ các phiên bản ứng dụng bị can thiệp, thiết bị không đáng tin cậy hoặc môi trường mô phỏng), máy chủ phụ trợ của bạn có thể phản hồi bằng các hành động thích hợp để ngăn chặn hành vi sai trái và truy cập trái phép, chống lại hành vi gian lận, chống lại hành vi lừa đảo và bảo vệ người dùng khỏi các cuộc tấn công.

Tổng quan về quy trình của API Tính toàn vẹn của Play

API này trả về các kết quả giúp bạn phát hiện các mối đe doạ tiềm ẩn, bao gồm:

  • Truy cập trái phép: Kết quả accountDetails giúp bạn xác định xem người dùng đã cài đặt hoặc thanh toán cho ứng dụng hoặc trò chơi của bạn trên Google Play hay chưa.
  • Hành vi can thiệp vào mã: Kết quả appIntegrity giúp bạn xác định xem bạn có đang tương tác với tệp nhị phân chưa sửa đổi mà Google Play nhận dạng được hay không.
  • Thiết bị có rủi ro và môi trường mô phỏng: Kết quả deviceIntegrity giúp bạn 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 được Play Protect chứng nhận hay một phiên bản chính hãng của Google Play Games dành cho máy tính hay không.

Nhà phát triển trên Google Play cũng có thể chọn nhận thêm kết quả để phát hiện nhiều mối đe doạ tiềm ẩn hơn, bao gồm:

  • Thiết bị chưa được vá: Phản hồi MEETS_STRONG_INTEGRITY trong kết quả deviceIntegrity giúp bạn xác định xem một thiết bị đã áp dụng các bản cập nhật bảo mật gần đây hay chưa (đối với các thiết bị chạy Android 13 trở lên).
  • Quyền truy cập rủi ro của các ứng dụng khác: appAccessRiskVerdict giúp bạn xác định xem có ứng dụng nào đang chạy có thể dùng để chụp màn hình, hiển thị lớp phủ hoặc điều khiển thiết bị (ví dụ: bằng cách sử dụng sai quyền truy cập hỗ trợ tiếp cận) hay không.
  • Phần mềm độc hại đã biết: playProtectVerdict giúp bạn 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.
  • Hoạt động quá mức: Cấp độ recentDeviceActivity giúp bạn xác định xem gần đây một thiết bị có thực hiện số lượng yêu cầu cao bất thường hay không. Đây có thể là dấu hiệu của lưu lượng truy cập tự động và có thể là dấu hiệu của một cuộc tấn công.
  • Hành vi sai trái lặp lại và thiết bị được dùng lại: deviceRecall (thử nghiệm) giúp bạn xác định xem bạn có đang tương tác với một thiết bị mà bạn đã gắn cờ trước đây hay không, ngay cả khi ứng dụng của bạn được cài đặt lại hoặc thiết bị được đặt lại.

Bạn có thể dùng API này trên nhiều kiểu dáng thiết bị Android, bao gồm cả điện thoại, máy tính bảng, thiết bị có thể gập lại, Android Auto, Android TV, Android XR, ChromeOS, Wear OS và trên Google Play Games dành cho máy tính.

Lưu ý về bảo mật

API Tính toàn vẹn của Play hữu ích nhất khi bạn làm theo các phương pháp đề xuất sau đây:

Có chiến lược chống hành vi sử dụng sai mục đích

API Tính toàn vẹn của Play hoạt động tốt nhất khi được dùng cùng với các tín hiệu khác để tạo thành một chiến lược chống hành vi sử dụng sai mục đích, chứ không phải như cơ chế phòng vệ duy nhất. Hãy sử dụng API này cùng với các phương pháp bảo mật hay nhất khác phù hợp với ứng dụng của bạn. Theo mặc định, ứng dụng của bạn có thể thực hiện tổng cộng 10.000 yêu cầu mỗi ngày trên tất cả lượt cài đặt. Bạn có thể yêu cầu tăng mức tối đa hằng ngày.

Thu thập dữ liệu đo từ xa và tìm hiểu đối tượng của bạn trước khi hành động

Trước khi thay đổi cách ứng dụng hoạt động dựa trên kết quả của API Tính toàn vẹn của Play, bạn có thể hiểu được tình huống đang diễn ra với đối tượng hiện tại bằng cách triển khai API mà không cần thực thi. Sau khi biết các kết quả đánh giá mà số lượt cài đặt hiện tại của mình trả về, bạn có thể ước tính mức độ tác động của các biện pháp thực thi mà mình đang dự định sử dụng rồi điều chỉnh chiến lược chống hành vi sử dụng sai mục đích cho phù hợp.

Lựa chọn cách bạn yêu cầu kết quả về tính toàn vẹn

API Tính toàn vẹn của Play cung cấp 2 lựa chọn để yêu cầu và nhận kết quả về tính toàn vẹn. Cho dù bạn đưa ra yêu cầu thông thường, yêu cầu kiểu cũ hay kết hợp cả 2 loại yêu cầu, thì phản hồi kết quả về tính toàn vẹn sẽ được trả về ở cùng một định dạng.

Các yêu cầu API thông thường phù hợp với mọi ứng dụng/trò chơi và có thể được thực hiện theo yêu cầu để kiểm tra xem bất kỳ hành động nào của người dùng hoặc bất kỳ yêu cầu nào gửi tới máy chủ có phải là hành động/yêu cầu thật hay không. Các yêu cầu thông thường có độ trễ thấp nhất (trung bình vài trăm mili giây) và độ tin cậy cao trong quá trình thu thập kết quả hữu dụng. Các yêu cầu thông thường tận dụng khả năng lưu vào bộ nhớ đệm thông minh trên thiết bị khi uỷ quyền cho Google Play ngăn chặn một số loại tấn công nhất định.

Các yêu cầu API kiểu cũ (phương thức nguyên gốc để yêu cầu kết quả về tính toàn vẹn) vẫn có thể được sử dụng. Các yêu cầu kiểu cũ có độ trễ cao hơn (trung bình vài giây) và bạn chịu trách nhiệm giảm thiểu nguy cơ xảy ra một số loại tấn công nhất định. Các yêu cầu kiểu cũ sử dụng nhiều dữ liệu và pin của người dùng hơn so với các yêu cầu thông thường vì chúng khởi chạy một quy trình đánh giá hoàn toàn mới. Vì vậy, bạn chỉ nên thực hiện loại yêu cầu này một lần để kiểm tra xem một hành động có giá trị hay mang tính nhạy cảm cao có phải là thật hay không. Nếu đang cân nhắc tạo một yêu cầu kiểu cũ và lưu vào bộ nhớ đệm để sử dụng sau này, thì thay vào đó, bạn nên thực hiện một yêu cầu thông thường để giảm nguy cơ bị tấn công.

Bảng sau đây nêu bật một số điểm khác biệt chính giữa 2 loại yêu cầu này:

Yêu cầu API thông thường Yêu cầu API kiểu cũ
Cần có phiên bản SDK Android tối thiểu Android 5.0 (API cấp 21) trở lên Android 4.4 (API cấp 19) trở lên
Cần phải khởi động API ✔️ (vài giây)
Độ trễ thông thường của yêu cầu Vài trăm mili giây Vài giây
Tần suất yêu cầu tiềm năng Thường xuyên (kiểm tra theo yêu cầu đối với bất kỳ hành động hoặc yêu cầu nào) Không thường xuyên (kiểm tra một lần đối với các hành động có giá trị cao nhất hoặc các yêu cầu mang tính nhạy cảm nhất)
Giảm thiểu cuộc tấn công phát lại và các cuộc tấn công tương tự Tự động giảm thiểu nhờ Google Play Sử dụng trường nonce với logic phía máy chủ

Bạn có thể thấy một bảng có nhiều khác biệt khác trong phần những điểm cần cân nhắc về yêu cầu kiểu cũ.

Yêu cầu kết quả về tính toàn vẹn vào một thời điểm thích hợp

Để hạn chế những kẻ lừa đảo vượt qua quy trình kiểm tra tính toàn vẹn, bạn nên yêu cầu kết quả đánh giá rủi ro truy cập ứng dụng càng gần thời điểm thực hiện hành động (hoặc yêu cầu gửi tới máy chủ) mà bạn muốn bảo vệ khỏi bị truy cập càng tốt.

Khiến các yêu cầu API của bạn khó sao chép

Các yêu cầu API thông thường có một trường tên là requestHash dùng để ngăn chặn hành vi can thiệp và các cuộc tấn công tương tự. Trong trường này, bạn nên thêm một chuỗi đại diện cho tất cả các giá trị có liên quan trong yêu cầu của ứng dụng. Làm theo hướng dẫn về cách sử dụng tính năng liên kết nội dung để bảo vệ các yêu cầu thông thường của ứng dụng.

Các yêu cầu API kiểu cũ có một trường tên là nonce (viết tắt của number once (số chỉ dùng một lần)), dùng để ngăn chặn một số loại tấn công nhất định, chẳng hạn như các cuộc tấn công phát lại và can thiệp. Hãy làm theo hướng dẫn về cách tạo số chỉ dùng một lần để bảo vệ các yêu cầu kiểu cũ của ứng dụng.

Tránh lưu kết quả về tính toàn vẹn vào bộ nhớ đệm

Việc lưu vào bộ nhớ đệm các kết quả về tính toàn vẹn sẽ làm tăng nguy cơ bị tấn công proxy. Đây là kiểu tấn công trong đó đối tượng xấu sử dụng lại kết quả từ một thiết bị tốt cho mục đích sai trái trong một môi trường khác. Thay vì lưu các phản hồi vào bộ nhớ đệm, bạn có thể thực hiện yêu cầu API thông thường để nhận kết quả theo yêu cầu.

Có chiến lược thực thi theo cấp độ

Kết quả về tính toàn vẹn mà API Tính toàn vẹn của Play cung cấp có thể có phản hồi đa dạng, giúp bạn xây dựng được một chiến lược chống hành vi sử dụng sai mục đích với nhiều cấp độ thực thi. Bạn có thể thực hiện việc này bằng cách định cấu hình để máy chủ phụ trợ của ứng dụng hoạt động theo các cách khác nhau tuỳ vào từng phản hồi hoặc nhóm phản hồi.

Bạn cũng có thể phân cấp chiến lược thực thi dựa trên độ tin cậy của thiết bị bằng cách chọn nhận nhãn thiết bị bổ sung trong phản hồi của API từ Play Console. Mỗi thiết bị sẽ trả về tất cả các nhãn mà thiết bị đáp ứng tiêu chí. Ví dụ: sau khi chọn nhận tất cả các nhãn thiết bị, bạn có thể chọn tin tưởng thiết bị trả về MEETS_STRONG_INTEGRITY, MEETS_DEVICE_INTEGRITYMEETS_BASIC_INTEGRITY hơn so với thiết bị chỉ trả về MEETS_BASIC_INTEGRITY. Bạn có thể để máy chủ phản hồi khác đi trong từng trường hợp.

Gửi một loạt các phản hồi từ máy chủ đến ứng dụng

Việc đưa ra một loạt kết quả cho quyết định sẽ khó sao chép hơn so với việc gửi một phản hồi nhị phân Cho phép/Từ chối từ máy chủ trở lại ứng dụng cho mỗi phản hồi. Ví dụ: bạn có thể sử dụng một loạt các phản hồi có liên quan như Cho phép, Cho phép kèm giới hạn, Cho phép kèm giới hạn sau khi hoàn thành hình ảnh xác thực (CAPTCHA) và Từ chối.

Phát hiện hành vi sai trái tái diễn bằng tính năng ghi nhớ thiết bị, trong khi vẫn đảm bảo quyền riêng tư của người dùng

Tính năng ghi nhớ thiết bị cho phép các ứng dụng lưu trữ và thu hồi một số dữ liệu tuỳ chỉnh được liên kết với một thiết bị cụ thể theo cách bảo vệ quyền riêng tư của người dùng. Dữ liệu được lưu trữ trên các máy chủ của Google, cho phép ứng dụng của bạn thu hồi dữ liệu trên từng thiết bị một cách đáng tin cậy ngay cả sau khi người dùng cài đặt lại ứng dụng đó hoặc đặt lại thiết bị. Điều này giúp bạn có một cách đáng tin cậy để xác định lại một thiết bị mà bạn từng phát hiện có hành vi sai trái để có thể thực hiện biện pháp và ngăn chặn thiết bị đó được sử dụng lại cho hành vi sai trái. Bạn có thể tự xác định ý nghĩa cho 3 giá trị tạo nên dữ liệu thu hồi thiết bị:

  • Bạn có thể sử dụng các giá trị này dưới dạng tối đa 3 cờ hoặc giá trị boolean riêng biệt. Ví dụ: các giá trị có thể cho biết một thiết bị đã hoặc chưa tạo tài khoản, đã hoặc chưa sử dụng ưu đãi dùng thử miễn phí hoặc đã hoặc chưa được biết đến là có hành vi sai trái ở mức độ nghiêm trọng cao.
  • Ngoài ra, bạn có thể kết hợp tất cả các trạng thái của giá trị thành tối đa 8 nhãn tuỳ chỉnh, ví dụ: một nhãn cho trạng thái mặc định khi cả 3 giá trị đều không được sửa đổi và 7 nhãn có ý nghĩa tuỳ chỉnh. Nhờ đó, bạn có thể phân đoạn tất cả thiết bị thành tối đa 8 nhóm dựa trên những hành vi hoặc hành động mà bạn xác định. Trong trường hợp này, writeDates được cập nhật gần đây nhất trong số 3 writeDates cho biết thời điểm bạn cập nhật nhãn gần đây nhất.

Ngoài ra, hãy lưu ý các điều kiện tiên quyết và những điểm cần cân nhắc khác khi làm việc với dữ liệu thu hồi thiết bị.

Phát hiện hành vi sai trái trên diện rộng bằng cách sử dụng hoạt động gần đây trên thiết bị

Sử dụng tính năng hoạt động gần đây trên thiết bị trong API Tính toàn vẹn của Play để tìm xem có những thiết bị nào đã yêu cầu rất nhiều mã thông báo về tính toàn vẹn. Những kẻ lạm dụng hoạt động ở quy mô lớn thường tạo ra kết quả chứng thực hợp lệ từ các thiết bị thực và cung cấp kết quả đó cho bot để tự động tiến hành các cuộc tấn công trên trình mô phỏng và thiết bị bị can thiệp hệ thống. Bạn có thể sử dụng cấp hoạt động gần đây trên thiết bị để kiểm tra số lần chứng thực mà ứng dụng của bạn đã tạo trên thiết bị đó trong giờ vừa qua.

Hiện thông báo lỗi có thể xử lý

Khi có thể, hãy cung cấp các thông báo lỗi hữu ích cho người dùng và cho họ biết những việc có thể làm để khắc phục vấn đề, chẳng hạn như thử lại, bật kết nối Internet hoặc kiểm tra để đảm bảo rằng ứng dụng Cửa hàng Play đã được cập nhật.

Lên kế hoạch cho các vấn đề hoặc tình trạng ngừng dịch vụ bất ngờ

Trang tổng quan về trạng thái của Play hiển thị thông tin về trạng thái dịch vụ của API Tính toàn vẹn của Play, cùng với thông tin về mọi sự cố gián đoạn và ngừng hoạt động. Bạn nên lên kế hoạch trước về cách bạn muốn máy chủ phụ trợ hoạt động trong trường hợp xảy ra tình trạng ngừng dịch vụ của API Tính toàn vẹn của Play trên quy mô lớn (hiếm gặp). Xin lưu ý rằng máy chủ phụ trợ của bạn cũng phải sẵn sàng hoạt động trong trường hợp các khoá Chứng thực khoá nền tảng Android dành riêng cho thiết bị bị thu hồi.

Cân nhắc giải pháp toàn diện để chống gian lận cho doanh nghiệp

Khách hàng doanh nghiệp đang tìm kiếm giải pháp toàn diện để quản lý bot và gian lận có thể mua reCAPTCHA Enterprise cho thiết bị di động. Trong dịch vụ này có SDK dành cho Android cung cấp điểm số về rủi ro gian lận cho nhà phát triển. reCAPTCHA Enterprise sẽ tự động nhận các tín hiệu của API Tính toàn vẹn của Play, đồng thời kết hợp các tín hiệu này với mạng reCAPTCHA và các tín hiệu của ứng dụng để cung cấp cho khách hàng một giải pháp quản lý gian lận độc đáo, thầm lặng nhưng vô cùng hiệu quả. Ngoài ra, giải pháp này còn có thể bảo vệ các ứng dụng Android khi không có API Tính toàn vẹn của Play.

Thử thách lưu lượng truy cập rủi ro trước khi cho phép sử dụng các tính năng nhạy cảm hoặc có giá trị cao

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ệ.

Điều khoản dịch vụ và an toàn dữ liệu

Bằng cách truy cập hoặc sử dụng API Tính toàn vẹn của Play, bạn đồng ý với Điều khoản dịch vụ của API Tính toàn vẹn của Play. Vui lòng đọc và nắm được tất cả các điều khoản và chính sách hiện hành trước khi truy cập vào API này.

Google Play có một mục an toàn dữ liệu dành cho nhà phát triển để công bố các phương pháp thu thập, chia sẻ và bảo mật dữ liệu của ứng dụng nhằm giúp người dùng nắm được các thông tin mới nhất. Để giúp bạn hoàn thành biểu mẫu dữ liệu, hãy xem thông tin về cách API Tính toàn vẹn của Play xử lý dữ liệu.