Zapobieganie nadużyciom interfejsu Gemini API za pomocą funkcji Sprawdzanie 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 przed nadużyciami, możesz użyć Firebase App Check aby sprawdzić, czy wszystkie przychodzące wywołania interfejsu API pochodzą z Twojej prawdziwej aplikacji i z niezmodyfikowanego urządzenia.

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. Korzystanie z 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.

App Check obsługuje też ochronę przed atakami typu replay, co oznacza, że token App Check można użyć tylko raz.

Ogólne podsumowanie działania App Check

W przypadku App Check urządzenia, na których działa Twoja aplikacja, korzystają z dostawcy potwierdzenia aplikacji lub urządzenia , który weryfikuje co najmniej 1 z tych elementów:

  • Żą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 wymuszanie App Check, żądania od klientów bez prawidłowego potwierdzenia zostaną odrzucone, podobnie jak żądania pochodzące z aplikacji lub platformy, na które nie masz zezwolenia.

Podczas konfigurowania App Check rozważ dodanie ochrony przed atakami typu replay, która sprawia, że tokeny App Checkjednorazowe. Ta opcja zapewnia lepszą ochronę niż ochrona podstawowa i umożliwia ustawienie odpowiedniego poziomu ochrony aplikacji i przypadków użycia.

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

Konfigurowanie App Check

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

  1. Wybierz domyślnego dostawcę potwierdzeń i postępuj zgodnie z instrukcjami implementacji podanymi w tych linkach:

    Jeśli żaden z domyślnych dostawców potwierdzeń nie spełnia Twoich potrzeb, możesz zaimplementować dostawcę niestandardowego, który korzysta z zewnętrznego dostawcy potwierdzeń lub własnych technik potwierdzania.

  2. (Wymagane) Włącz egzekwowanie App Check zanim prześlesz aplikację do publicznie dostępnego systemu kontroli kodu źródłowego, udostępnisz ją lub udostępnisz publicznie.

  3. (Zalecane) Zwiększ ochronę, dodając ochronę przed atakami typu replay, co oznacza, że token App Check można użyć tylko raz.

Zwiększanie ochrony przez dodanie ochrony przed atakami typu replay

Zalecamy używanie najnowszych wersji pakietu SDK, ale upewnij się, że używasz co najmniej jednej z tych wersji, aby korzystać z ochrony przed atakami typu replay:
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 SDK App Check, wysyłane wraz z żądaniami z Twojej aplikacji i mogą być ponownie używane do momentu wygaśnięcia ich czasu życia. Używanie tokenów sesji jest uważane za ochronę podstawową.

Możesz jednak zwiększyć ochronę poza tę podstawową, wymuszając ochronę przed atakami typu replay, która zamiast tego używa tokenów o ograniczonym użyciu. Gdy wymuszana jest ochrona przed atakami typu replay, dzieje się to:

  • App Check będzie blokować żądania do Firebase AI Logic, które używają tokenów sesji. Zamiast tego App Check będzie zezwalać na żądanie do Firebase AI Logic tylko wtedy, gdy używa ono nowo wygenerowanego tokena o ograniczonym użyciu.

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

  • Pakiet SDK App Check generuje nowy token o ograniczonym użyciu dla każdego żądania. Pamiętaj, że ten proces może wpłynąć na Twoje żądania, dodając pewne opóźnienie i czasami koszt (w zależności od dostawcy potwierdzeń).

Konfigurowanie i wymuszanie ochrony przed atakami typu replay

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

Oto jak skonfigurować i wymusić ochronę przed atakami typu replay:

  1. Jeśli jeszcze tego nie zrobisz, zaimplementuj App Check i włącz wymuszanie App Check w swojej aplikacji.

  2. Włącz używanie tokenów o ograniczonym użyciu.

    W aplikacji podczas tworzenia instancji ustaw 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(
      useLimitedUseAppCheckTokens: true,
    );
    
    // ...
    
    

    Unity

    // ...
    
    // During instantiation, enable usage of limited-use tokens
    var ai = FirebaseAI.GetInstance(
      useLimitedUseAppCheckTokens: true
    );
    
    // ...
    
  3. Wymuś ochronę przed atakami typu replay.

    1. W kodzie aplikacji upewnij się, że masz włączone używanie tokenów o ograniczonym użyciu (patrz poprzedni krok).

    2. W konsoli Firebase otwórz Bezpieczeństwo > Sprawdzanie aplikacji.

    3. Rozwiń widok danych o Firebase AI Logic.

    4. Upewnij się, że Ochrona podstawowa jest wymuszana, a następnie kliknij Dalej.

    5. W przypadku ochrony przed atakami typu replay wybierz Niewymuszana (tylko monitorowanie) lub Wymuszana.

      Aby zdecydować, kiedy wymusić ochronę przed atakami typu replay, weź pod uwagę te kwestie:

      • Monitorowanie żądań jest zalecane, jeśli znaczna liczba użytkowników prawdopodobnie korzysta ze starszych wersji aplikacji bez włączonego używania tokenów o ograniczonym użyciu. Jeśli od razu wymusisz ochronę przed atakami typu replay, żądania od tych użytkowników zostaną zablokowane.

      • Możesz monitorować wskaźnik Niezweryfikowane: token użyty ponownie , który oznacza liczbę żądań z tokenem, który został już użyty w poprzednim żądaniu. Monitoruj ten wskaźnik w konsoli Firebase (otwórz kartę Bezpieczeństwo > Sprawdzanie aplikacji > Interfejsy API).

        Jeśli znaczna część ostatnich żądań należy do tej kategorii, możesz uniknąć zakłóceń u użytkowników i poczekać z wymuszeniem ochrony przed atakami typu replay, aż więcej użytkowników zaktualizuje aplikację do wersji, która używa tokenów o ograniczonym użyciu.

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.