Triển khai tính năng Kiểm tra ứng dụng Firebase để bảo vệ API khỏi các ứng dụng không được uỷ quyền

Khi bạn gọi một API trực tiếp từ mộ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 đó rất dễ bị các ứng dụng khách không được uỷ quyền lợi dụng. Để giúp bảo vệ các API này, bạn có thể sử 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.

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 Firebase AI Logic SDK hỗ trợ tất cả các cấu hình của chúng tôi:

  • Bảo vệ cả hai nhà cung cấp "Gemini API": Gemini Developer APIVertex AI Gemini API.

  • Bảo vệ tất cả các mô hình được hỗ trợ, cả Gemini mô hình và Imagen mô hình.

Nội dung tóm tắt cấp cao về cách App Check hoạt động

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

  • Yêu cầu bắt nguồn từ ứng dụng chính thức của bạn
  • Yêu cầu bắt nguồn từ một thiết bị chính thức, 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 tính năng thực thi App Check, các yêu cầu từ ứng dụng khách 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.

Chúng tôi đề xuất rằng khi bạn thiết lập App Check, hãy đảm bảo chuẩn bị cho tính năng bảo vệ nâng cao sắp tới (được gọi là tính năng bảo vệ chống phát lại).

Bạn có thể tìm thấy thông tin chi tiết về App Check trong tài liệu của tính năng này, bao gồm cả hạn mức và giới hạn.

Các nhà cung cấp hiện có và hướng dẫn triển khai

Tài liệu về App Check cung cấp nội dung mô tả về các nhà cung cấp chứng thực cũng như hướng dẫn triển khai.

  1. Chọn một nhà cung cấp mặc định và làm theo hướng dẫn triển khai tại các đường liên kết sau:

    Xin lưu ý rằng nếu không có nhà cung cấp mặc định nào đáp ứng được nhu cầu của bạn, thì bạn có thể triển khai 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.

  2. (Nên dùng) Chuẩn bị cho tính năng bảo vệ nâng cao sắp tới (được gọi là tính năng bảo vệ chống phát lại).App Check

  3. (Bắt buộc) Trước khi phát hành ứng dụng cho người dùng thực, hãy bật tính năng thực thi App Check.

Yêu cầu tạo thực thể đặc biệt cho Flutter

Nhấp vào nhà cung định Gemini API để xem nội dung dành riêng cho nhà cung cấp và mã trên trang này.

Khi sử dụng App Check với Firebase AI Logic trong các ứng dụng Flutter, bạn cần truyền App Check một cách rõ ràng trong quá trình tạo thực thể, như sau:

// ...

final ai = await FirebaseAI.googleAI(
  appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
);

// ...

Chuẩn bị cho tính năng bảo vệ nâng cao sắp tới

Tính năng cho phép sử dụng mã thông báo sử dụng có giới hạn được hỗ trợ cho các nền tảng Apple (phiên bản 12.2.0 trở lên), Android (phiên bản 17.2.0 trở lên, BoM phiên bản 34.2.0 trở lên), Web (phiên bản 12.3.0 trở lên) và Flutter (phiên bản 3.2.0 trở lên, BoM phiên bản 4.2.0 trở lên). Chúng tôi sẽ sớm hỗ trợ Unity.

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 từ 30 phút đến 7 ngày. Các mã thông báo phiên này được SDK App Check lưu vào bộ nhớ đệm và gửi cùng với các yêu cầu từ ứng dụng của bạn.

Trong tương lai, App Check sẽ thêm tuỳ chọn bật tính năng bảo vệ chống phát lại cho Firebase AI Logic (tương tự như tính năng hỗ trợ mà App Check đã cung cấp cho một số tài nguyên khác). Khi bật tính năng bảo vệ chống phát lại, tính năng này sẽ tăng cường khả năng bảo vệ theo những cách sau:

  • App Check sẽ chỉ cho phép các yêu cầu nếu các yêu cầu đó đi kèm với một loại mã thông báo đặc biệt có tên là mã thông báo sử dụng có giới hạn.

  • Sau khi mã thông báo sử dụng có giới hạn được xác minh, mã thông báo đó sẽ được sử dụng để chỉ có thể dùng một lần, ngăn chặn các cuộc tấn công phát lại mã.

Để chuẩn bị cho tính năng bảo vệ chống phát lại, bạn nên bật tính năng sử dụng mã thông báo sử dụng có giới hạn trong quá trình thiết lập App Check. Bằng cách đó, khi tính năng bảo vệ chống phát lại được cung cấp, bạn có thể bật tính năng này sớm hơn vì nhiều người dùng sẽ sử dụng các phiên bản ứng dụng gửi mã thông báo sử dụng có giới hạn.

Hãy lưu ý những điều sau nếu bạn bật tính năng sử dụng mã thông báo sử dụng có giới hạn trong ứng dụng của mình ngay bây giờ (trong khi tính năng bảo vệ chống phát lại chưa được cung cấp):

  • App Check không chặn việc sử dụng mã thông báo phiên hợp lệ.

  • Giống như mã thông báo phiên, mã thông báo sử dụng có giới hạn được App Check SDK lưu vào bộ nhớ đệm và gửi cùng với các yêu cầu. Các mã thông báo sử dụng có giới hạn này cung cấp một mức bảo vệ bổ sung nhỏ so với mã thông báo phiên mặc định vì mã thông báo sử dụng có giới hạn có TTL ngắn hơn (chỉ 5 phút và không thể điều chỉnh) so với mã thông báo phiên.

  • Mặc dù mã thông báo sử dụng có giới hạn có hiệu lực trong 5 phút, nhưng SDK vẫn sẽ tạo một mã thông báo mới cho mỗi yêu cầu. Quá trình này có thể làm tăng độ trễ cho yêu cầu của bạn.

Tuy nhiên, khi tính năng bảo vệ chống phát lại được cung cấp cho Firebase AI Logic trong tương lai (và bạn bật tính năng này), thì bạn sẽ không thể sử dụng mã phiên và sử dụng lại mã thông báo sử dụng có giới hạn. Xin lưu ý rằng độ trễ bổ sung để tạo mã thông báo mới cho mỗi yêu cầu vẫn sẽ xảy ra.

Bật tính năng sử dụng mã thông báo sử dụng có giới hạn

Nhấp vào nhà cung định Gemini API để xem nội dung dành riêng cho nhà cung cấp và mã trên trang này.

Dưới đây là cách bật tính năng sử dụng mã thông báo sử dụng có giới hạn:

  1. Triển khai App Check và đảm bảo rằng bạn đã bật tính năng thực thi App Check cho ứng dụng của mình.

  2. Trong ứng dụng của bạn trong quá trình tạo thực thể, hãy bật tính năng sử dụng mã thông báo sử dụng có giới hạn bằng cách đặt tham số useLimitedUseAppCheckTokens thành true:

    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(
      appCheck: FirebaseAppCheck.instance, // for Flutter, pass in App Check explicitly
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    Tính năng sử dụng mã thông báo sử dụng có giới hạn với trò chơi Unity sẽ được hỗ trợ trong một bản phát hành trong tương lai. Vui lòng kiểm tra lại sớm!

Tìm hiểu cách Firebase AI Logic tích hợp với App Check

Để sử dụng SDK Firebase AI Logic, bạn phải bật API Firebase AI Logic (firebasevertexai.googleapis.com) trong dự án Firebase của mình. Điều này là do các yêu cầu do các Firebase AI Logic SDK thực hiện trước tiên được gửi đến Firebase AI Logic máy chủ. Máy chủ này hoạt động như một cổng proxy nơi quá trình xác minh Firebase App Checkdiễ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 mô hình GeminiImagen.