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 App Check được thực thi, các yêu cầu từ những máy 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.

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 nhà cung cấp chứng thực 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 nào trong số này đá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.

  4. Đối với quá trình phát triển cục bộ khi App Check được thực thi, hãy định cấu hình trình cung cấp gỡ lỗi App Check để bỏ qua chứng thực trong khi vẫn duy trì việc thực thi App Check. Xem hướng dẫn thiết lập cho nền tảng của bạn: iOS+ | Android | Web | Flutter | Unity.

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.

(Không bắt buộc) Thực thi App Check mà không có nhà cung cấp chứng thực sản xuất (chỉ nhà cung cấp gỡ lỗi)

Bạn có thể thực thi App Check cho AI Logic mà không cần đăng ký ứng dụng với một nhà cung cấp chứng thực sản xuất. Chế độ thiết lập này cho phép bạn sử dụng trình cung cấp gỡ lỗi App Check để bắt đầu sử dụng AI Logic dễ dàng hơn trong khi vẫn bảo vệ Gemini API.

  1. Kiểm tra xem App Check đã được thực thi cho AI Logic hay chưa.

    1. Trong bảng điều khiển Firebase, hãy chuyển đến thẻ Bảo mật > App Check > API.

    2. Tìm hàng cho Firebase AI Logic. Nếu bạn thấy biểu tượng Unenforced, hãy tiếp tục làm theo các hướng dẫn còn lại.

  2. Sử dụng API REST App Check để thực thi App Check cho Firebase AI Logic.

    Gửi yêu cầu đến điểm cuối projects.services.patch.

    • Chỉ định các tham số yêu cầu sau:

      • PROJECT_NUMBER: Số dự án Firebase của bạn.
        Tìm mã nhận dạng dự án này trong phần Cài đặt > thẻ Chung của bảng điều khiển Firebase.

      • SERVICE_ID: firebasevertexai.googleapis.com
        Mã nhận dạng này là tên dịch vụ chính thức của API Firebase AI Logic và có hiệu lực cho dù bạn đang truy cập vào Vertex AI Gemini API hay Gemini Developer API.

      • updateMask: enforcementMode

    • Hãy chỉ định những thông tin sau trong phần nội dung yêu cầu:

      • "enforcementMode": "ENFORCED"
  3. Đối với quá trình phát triển cục bộ hiện tại khi App Check được thực thi, bạn cần định cấu hình trình cung cấp gỡ lỗi App Check để bỏ qua chứng thực trong khi vẫn duy trì việc thực thi App Check.

    Để biết thông tin chi tiết về cách định cấu hình trình cung cấp gỡ lỗi, hãy xem hướng dẫn cho nền tảng của bạn: iOS+ | Android | Web | Flutter | Unity.