Ngăn chặn hành vi sử dụng sai trái Gemini API bằng Kiểm tra ứng dụng Firebase

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

  1. 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:

    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.

  2. (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.

  3. (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ừ 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, được gửi cùng với các yêu cầu từ ứng dụng của bạn và có thể được dùng lại cho đến khi TTL hết hạn. Việc sử dụng mã thông báo phiên được coi là biện pháp bảo vệ cơ bản.

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:

  1. Nếu bạn chưa làm, hãy triển khai App Checkbật chế độ thực thi App Check cho ứng dụng của bạn.

  2. 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ố 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(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. Thực thi biện pháp bảo vệ khỏi các cuộc tấn công phát lại.

    1. 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).

    2. Trong bảng điều khiển Firebase, hãy chuyển đến phần Bảo mật > App Check.

    3. Mở rộng chế độ xem chỉ số cho Firebase AI Logic.

    4. Đảm bảo Bảo vệ cơ bản được Thực thi, sau đó nhấp vào Tiếp tục.

    5. Để 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 GeminiImagen.