Chroń interfejsy API przed nieautoryzowanymi klientami za pomocą Sprawdzania aplikacji Firebase

Gdy wywołujesz interfejs API bezpośrednio z aplikacji mobilnej lub aplikacji internetowej (np. interfejsy API, które umożliwiają dostęp do generatywnych modeli AI), jest on narażony na nadużycia ze strony nieautoryzowanych klientów. Aby chronić te interfejsy API, możesz użyć Firebase App Check aby sprawdzić, czy wszystkie przychodzące wywołania interfejsu API pochodzą z Twojej prawdziwej aplikacji.

Firebase AI Logic udostępnia bramę proxy, która umożliwia integrację z Firebase App Check i ochronę interfejsów API modeli generatywnej AI wywoływanych przez Twoje aplikacje mobilne i internetowe. Używanie App Check z Firebase AI Logic pakietami SDK obsługuje wszystkie nasze konfiguracje:

  • Chroni obu dostawców "Gemini API": Gemini Developer API i Vertex AI Gemini API.

  • Chroni wszystkie obsługiwane modele, zarówno Gemini modele, jak i Imagen modele.

Ogólne podsumowanie działania App Check

Dzięki App Check urządzenia, na których działa Twoja aplikacja, korzystają z dostawcy potwierdzenia aplikacji lub urządzenia , który weryfikuje co najmniej jedną z tych kwestii:

  • Żądania pochodzą z Twojej autentycznej aplikacji.
  • Żądania pochodzą z autentycznego, niezmodyfikowanego urządzenia.

To potwierdzenie jest dołączane do każdego żądania wysyłanego przez Twoją aplikację za pomocą pakietu Firebase AI Logic SDK. Gdy włączysz egzekwowanie App Check, żądania od klientów bez prawidłowego atestu zostaną odrzucone, podobnie jak wszystkie żądania pochodzące z aplikacji lub platformy, na które nie masz zezwolenia.

Zalecamy, aby podczas konfigurowania App Check upewnić się, że przygotujesz się na nadchodzącą silniejszą ochronę (znaną jako ochrona przed atakami typu replay).

Szczegółowe informacje o App Check, w tym o limitach, znajdziesz w dokumentacji.

Dostępni dostawcy i instrukcje implementacji

Dokumentacja App Check zawiera opisy dostawców potwierdzeń oraz instrukcje implementacji.

  1. Wybierz dostawcę domyślnego i postępuj zgodnie z instrukcjami implementacji, które znajdziesz pod tymi linkami:

    Pamiętaj, że jeśli żaden z domyślnych aprowizatorów nie spełnia Twoich potrzeb, możesz zaimplementować aprowizatora niestandardowego, który korzysta z zewnętrznego aprowizatora atestów lub z własnych metod atestacji.

  2. (Zalecane) Przygotuj się na nadchodzącą silniejszą ochronę przed App Check (znaną jako ochrona przed atakami typu replay).

  3. (Wymagane) Zanim udostępnisz aplikację prawdziwym użytkownikom, włącz wymuszanie App Check.

Specjalne tworzenie instancji wymagane w przypadku Fluttera

Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy.

Gdy używasz App Check z Firebase AI Logic w aplikacjach Flutter, musisz jawnie przekazać App Check podczas tworzenia instancji, tak jak poniżej:

// ...

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

// ...

Przygotowanie na nadchodzącą silniejszą ochronę

Zalecamy używanie najnowszych wersji pakietu SDK, ale upewnij się, że używasz co najmniej jednej z tych wersji, aby włączyć tokeny ograniczonego użytku:
Platformy Apple w wersji 12.2.0 lub nowszej | Android BoM w wersji 34.14.0 lub nowszej (App Check w wersji 19.1.0 lub nowszej) | Internet w wersji 12.14.0 lub nowszej | Flutter w wersji 4.15.0 lub nowszej (App Check w wersji 4.10.0 lub nowszej) | Unity w wersji 13.12.0 lub nowszej

Domyślnie App Check używa tokenów sesji, które mają konfigurowalny czas życia (TTL) od 30 minut do 7 dni. Te tokeny sesji są buforowane przez pakiet App Check SDK i wysyłane wraz z żądaniami z Twojej aplikacji.

W przyszłości App Check doda opcję włączenia ochrony przed atakami typu replay w przypadku Firebase AI Logic (podobnie jak w przypadku innych zasobów, w przypadku których App Check już oferuje taką ochronę). Gdy ochrona przed atakami typu replay jest włączona, zwiększa ochronę w następujący sposób:

  • App Check zezwoli na żądania tylko wtedy, gdy będą one zawierać specjalny rodzaj tokena nazywany tokenem ograniczonego użytku.

  • Po zweryfikowaniu tokena ograniczonego użytku jest on zużywany, dzięki czemu można go użyć tylko raz, co zapobiega atakom typu replay.

Aby przygotować się na ochronę przed atakami typu replay, zalecamy włączenie używania tokenów ograniczonego użytku w ramach konfigurowania App Check. Dzięki temu, gdy ochrona przed atakami typu replay stanie się dostępna, będziesz ją mógł włączyć szybciej, ponieważ więcej użytkowników będzie korzystać z wersji Twojej aplikacji, które wysyłają tokeny ograniczonego użytku.

Jeśli teraz włączysz używanie tokenów ograniczonego użytku w swojej aplikacji (gdy ochrona przed atakami typu replay jest niedostępna), pamiętaj o tych kwestiach:

  • App Check nie blokuje używania prawidłowych tokenów sesji.

  • Podobnie jak tokeny sesji, tokeny ograniczonego użytku są buforowane przez pakiet SDK App Check i wysyłane wraz z żądaniami. Te tokeny ograniczonego użytku zapewniają niewielką dodatkową ochronę w porównaniu z domyślnymi tokenami sesji , ponieważ mają krótszy czas życia (tylko 5 minut i nie można go dostosować) niż tokeny sesji.

  • Mimo że tokeny ograniczonego użytku są ważne przez 5 minut, pakiet SDK będzie generować nowy token dla każdego żądania. Ten proces może zwiększyć opóźnienie żądania.

Gdy jednak w przyszłości ochrona przed atakami typu replay będzie dostępna w przypadku Firebase AI Logic w przyszłości (i ją włączysz), używanie tokenów sesji i ponowne używanie tokenów ograniczonego użytku nie będzie możliwe. Pamiętaj, że dodatkowe opóźnienie związane z generowaniem nowego tokena dla każdego żądania nadal będzie występować.

Włączanie używania tokenów ograniczonego użytku

Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy.

Aby włączyć używanie tokenów ograniczonego użytku:

  1. Zaimplementuj App Check i upewnij się, że włączyłeś egzekwowanie App Check w swojej aplikacji.

  2. Podczas tworzenia instancji w aplikacji włącz używanie tokenów ograniczonego użytku, ustawiając parametr useLimitedUseAppCheckTokens na 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

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    

Jak Firebase AI Logic integruje się z App Check

Aby korzystać z pakietów SDK Firebase AI Logic, interfejs API Firebase AI Logic (firebasevertexai.googleapis.com) musi być włączony w projekcie w Firebase. Dzieje się tak, ponieważ żądania wysyłane przez pakiety Firebase AI Logic SDK są najpierw wysyłane na Firebase AI Logic serwer, który działa jako brama proxy, gdzie odbywa się weryfikacja Firebase App Check zanim żądanie zostanie przekazane do backendu wybranego dostawcy "Gemini API" i interfejsów API umożliwiających dostęp do modeli Gemini i Imagen.