Khi bạn gọi một API trực tiếp từ ứng dụng di động hoặc ứng dụng web (ví dụ: các API cho phép truy cập vào các mô hình AI tạo sinh), API đó sẽ dễ bị các ứng dụng trái phép lợi dụng. Để bảo vệ các API này khỏi hành vi sai trái, bạn có thể dùng Firebase App Check để xác minh rằng tất cả các lệnh gọi API đến đều là từ ứng dụng thực tế của bạn và một thiết bị chưa bị can thiệp.
Firebase AI Logic cung cấp một cổng proxy cho phép bạn tích hợp với Firebase App Check và bảo vệ các API mô hình AI tạo sinh do ứng dụng di động và ứng dụng web của bạn gọi. Việc sử dụng App Check với các SDK Firebase AI Logic hỗ trợ tất cả cấu hình của chúng tôi:
Bảo vệ cả hai nhà cung cấp "Gemini API": Gemini Developer API và Vertex AI Gemini API.
Bảo vệ tất cả các mô hình được hỗ trợ, cả mô hình Gemini và mô hình Imagen.
App Check cũng hỗ trợ chống phát lại, tức là mã thông báo App Check chỉ có thể dùng một lần.
Tóm tắt cấp cao về cách hoạt động của App Check
Với App Check, các thiết bị chạy ứng dụng của bạn sẽ sử dụng một nhà cung cấp chứng thực ứng dụng hoặc thiết bị để xác minh một hoặc cả hai điều kiện sau:
- Yêu cầu bắt nguồn từ ứng dụng xác thực của bạn
- Các yêu cầu xuất phát từ một thiết bị chính hãng, không bị giả mạo
Chứng thực này được đính kèm vào mọi yêu cầu mà ứng dụng của bạn thực hiện bằng Firebase AI Logic SDK. Khi bạn bật chế độ thực thi App Check, các yêu cầu từ những ứng dụng không có chứng thực hợp lệ sẽ bị từ chối, cũng như mọi yêu cầu bắt nguồn từ một ứng dụng hoặc nền tảng mà bạn chưa uỷ quyền.
Khi thiết lập App Check, hãy cân nhắc việc thêm tính năng chống phát lại. Tính năng này sẽ khiến mã thông báo App Check chỉ được sử dụng một lần. Lựa chọn này cung cấp khả năng bảo vệ nâng cao ngoài khả năng bảo vệ cơ bản, đồng thời cho phép bạn đặt mức độ bảo vệ phù hợp cho ứng dụng và các trường hợp sử dụng của mình.
Bạn có thể tìm thấy thông tin chi tiết về App Check trong tài liệu của công cụ này, bao gồm cả hạn mức và giới hạn.
Thiết lập App Check
Tài liệu App Check cung cấp nội dung mô tả chi tiết về các trình cung cấp chứng thực cũng như hướng dẫn triển khai chi tiết.
Chọn một trình cung cấp chứng thực mặc định và làm theo hướng dẫn triển khai tại các đường liên kết sau:
- Nền tảng Apple: DeviceCheck hoặc App Attest
- Android: Play Integrity
- Web: reCAPTCHA Enterprise
- Flutter: Hỗ trợ tất cả nhà cung cấp mặc định ở trên
Nếu bạn đang dùng các phiên bản trình bổ trợ cũ, hãy xem ghi chú về việc tạo thực thể đặc biệt bên dưới. cho Flutter và App Check. - Unity: Hỗ trợ tất cả nhà cung cấp mặc định ở trên
Xin lưu ý rằng nếu không có nhà cung cấp chứng thực mặc định nào đáp ứng được nhu cầu của bạn, thì bạn có thể triển khai một nhà cung cấp tuỳ chỉnh sử dụng nhà cung cấp chứng thực bên thứ ba hoặc kỹ thuật chứng thực của riêng bạn.
(Bắt buộc) Bật chế độ thực thi App Check trước khi bạn cam kết ứng dụng của mình với một hệ thống kiểm soát mã nguồn công khai, chia sẻ ứng dụng hoặc cung cấp ứng dụng công khai.
(Nên dùng) Tăng cường biện pháp bảo vệ bằng cách thêm biện pháp bảo vệ chống phát lại, tức là mã thông báo App Check chỉ có thể được dùng một lần.
Tăng cường bảo vệ bằng cách thêm tính năng bảo vệ chống phát lại
|
Bạn nên dùng phiên bản SDK mới nhất, nhưng hãy đảm bảo bạn đang dùng ít nhất một trong các phiên bản này để sử dụng tính năng bảo vệ chống phát lại: Nền tảng Apple phiên bản 12.2.0 trở lên | Android BoM phiên bản 34.14.0 trở lên (App Check phiên bản 19.1.0 trở lên) | Web phiên bản 12.14.0 trở lên | Flutter phiên bản 4.15.0 trở lên (App Check phiên bản 4.10.0 trở lên) | Unity phiên bản 13.12.0 trở lên |
Theo mặc định, App Check sử dụng mã thông báo phiên có thời gian tồn tại (TTL) có thể định cấu hình trong khoảng từ
Tuy nhiên, bạn có thể tăng cường biện pháp bảo vệ ngoài biện pháp bảo vệ cơ bản này bằng cách thực thi biện pháp bảo vệ chống phát lại. Biện pháp này sử dụng mã thông báo dùng một lần. Khi biện pháp bảo vệ chống phát lại được thực thi, những điều sau sẽ xảy ra:
App Check sẽ chặn các yêu cầu đến Firebase AI Logic sử dụng mã thông báo phiên. Thay vào đó, App Check sẽ chỉ cho phép một yêu cầu đến Firebase AI Logic nếu yêu cầu đó sử dụng mã thông báo mới tạo dùng một lần.
Sau khi được xác minh, mã thông báo dùng một lần sẽ được sử dụng để chỉ có thể dùng một lần, nhờ đó ngăn chặn các cuộc tấn công phát lại.
SDK App Check sẽ tạo một mã thông báo sử dụng một lần mới cho mỗi yêu cầu. Xin lưu ý rằng quy trình này có thể ảnh hưởng đến các yêu cầu của bạn bằng cách tăng độ trễ và đôi khi là chi phí (tuỳ thuộc vào nhà cung cấp chứng thực của bạn).
Thiết lập và thực thi biện pháp bảo vệ chống phát lại
|
Nhấp vào nhà cung cấp Gemini API để xem nội dung và mã dành riêng cho nhà cung cấp trên trang này. |
Sau đây là cách thiết lập và thực thi tính năng bảo vệ chống phát lại:
Nếu bạn chưa làm, hãy triển khai App Check và bật chế độ thực thi App Check cho ứng dụng của bạn.
Cho phép sử dụng mã thông báo dùng một lần.
Trong ứng dụng của bạn trong quá trình khởi tạo, hãy đặt tham số
useLimitedUseAppCheckTokensthànhtrue:Swift
// ... // During instantiation, enable usage of limited-use tokens let ai = FirebaseAI.firebaseAI( backend: .googleAI(), useLimitedUseAppCheckTokens: true ) // ...Kotlin
// ... // During instantiation, enable usage of limited-use tokens val ai = Firebase.ai( backend = GenerativeBackend.googleAI(), useLimitedUseAppCheckTokens = true ) // ...Java
// ... // During instantiation, enable usage of limited-use tokens FirebaseAI ai = FirebaseAI.getInstance( /* backend: */ GenerativeBackend.googleAI(), /* useLimitedUseAppCheckTokens: */ true ); // ...Web
// ... // During instantiation, enable usage of limited-use tokens const ai = getAI(firebaseApp, { backend: new GoogleAIBackend(), useLimitedUseAppCheckTokens: true }); // ...Dart
// ... // During instantiation, enable usage of limited-use tokens final ai = await FirebaseAI.googleAI( useLimitedUseAppCheckTokens: true, ); // ...Unity
// ... // During instantiation, enable usage of limited-use tokens var ai = FirebaseAI.GetInstance( useLimitedUseAppCheckTokens: true ); // ...Thực thi biện pháp bảo vệ khỏi các cuộc tấn công phát lại.
Trong cơ sở mã của ứng dụng, hãy đảm bảo rằng bạn đã bật tính năng sử dụng mã thông báo sử dụng một lần (xem bước trước).
Trong bảng điều khiển Firebase, hãy chuyển đến phần Bảo mật > App Check.
Mở rộng chế độ xem chỉ số cho Firebase AI Logic.
Đảm bảo Bảo vệ cơ bản được Thực thi, sau đó nhấp vào Tiếp tục.
Để bảo vệ chống phát lại, hãy chọn Không bắt buộc (chỉ giám sát) hoặc Bắt buộc.
Hãy cân nhắc những điều sau để quyết định thời điểm thực thi biện pháp bảo vệ chống phát lại:
Bạn nên theo dõi các yêu cầu nếu có nhiều người dùng có khả năng đang sử dụng các phiên bản cũ hơn của ứng dụng mà không bật tính năng sử dụng mã thông báo sử dụng một lần. Nếu bạn thực thi ngay biện pháp bảo vệ chống phát lại, thì các yêu cầu của những người dùng đó sẽ bị chặn.
Bạn có thể theo dõi cụ thể chỉ số Chưa xác minh: Mã thông báo được dùng lại. Đây là số lượng yêu cầu có mã thông báo đã được dùng trong một yêu cầu trước đó. Theo dõi chỉ số này trong bảng điều khiển Firebase (chuyển đến thẻ Bảo mật > App Check > API).
Nếu một phần đáng kể các yêu cầu gần đây thuộc danh mục này, bạn có thể tránh làm gián đoạn người dùng và cân nhắc chờ đến khi có nhiều người dùng cập nhật lên phiên bản ứng dụng sử dụng mã thông báo chỉ dùng một lần.
Tìm hiểu cách Firebase AI Logic tích hợp với App Check
Để sử dụng Firebase AI Logic SDK, bạn phải bật Firebase AI Logic API (firebasevertexai.googleapis.com) trong dự án Firebase của mình. Điều này là do các yêu cầu do SDK Firebase AI Logic tạo ra trước tiên sẽ được gửi đến máy chủ Firebase AI Logic. Máy chủ này đóng vai trò là một cổng proxy nơi quá trình xác minh Firebase App Check diễn ra trước khi yêu cầu được phép chuyển đến phần phụ trợ của nhà cung cấp "Gemini API" mà bạn đã chọn và các API để truy cập vào các mô hình Gemini và Imagen.