Zabezpieczanie klucza interfejsu API za pomocą funkcji sprawdzania aplikacji

Sprawdzanie aplikacji Firebase zapewnia ochronę wywołań z Twojej aplikacji do Google Maps Platform poprzez blokowanie ruchu pochodzącego ze źródeł innych niż prawidłowe aplikacje. Robi to, sprawdzając token od dostawcy atestu, takiego jak reCAPTCHA Enterprise. Integracja aplikacji ze Sprawdzaniem aplikacji pomaga chronić przed szkodliwymi żądaniami, dzięki czemu nie naliczamy opłat za nieautoryzowane wywołania interfejsu API.

Czy sprawdzanie aplikacji jest dla mnie odpowiednie?

W większości przypadków zalecamy użycie narzędzia App Check, ale w tych sytuacjach nie jest ono potrzebne lub nie jest obsługiwane:

  • aplikacje prywatne lub eksperymentalne. Jeśli aplikacja nie jest dostępna publicznie, nie musisz przeprowadzać kontroli aplikacji.
  • Jeśli aplikacja jest używana tylko na serwerach, nie musisz przeprowadzać kontroli aplikacji. Jeśli jednak serwer komunikujący się z GMP jest używany przez publicznych klientów (np. aplikacje mobilne), rozważ zastosowanie App Check do ochrony tego serwera zamiast GMP.

Omówienie etapów wdrażania

Ogólnie rzecz biorąc, aby zintegrować aplikację z usługą App Check, musisz wykonać te czynności:

  1. Dodaj Firebase do swojej aplikacji.
  2. Dodaj i inicjuj bibliotekę AppCheck.
  3. Dodaj dostawcę tokenów do aplikacji.
  4. Zainicjuj interfejsy API Map JS i App Check.
  5. Włącz debugowanie.
  6. Sprawdzaj żądania aplikacji i decyduj o sposobie ich egzekwowania.

Po integracji z App Check możesz wyświetlać dane o ruchu w backendzie w konsoli Firebase. Te dane zawierają zestawienie żądań z podziałem na te, które mają prawidłowy token Sprawdzania aplikacji, i te, które go nie mają. Więcej informacji znajdziesz w dokumentacji Sprawdzania aplikacji Firebase.

Gdy będziesz mieć pewność, że większość żądań pochodzi z wiarygodnych źródeł, a użytkownicy zaktualizowali aplikację do najnowszej wersji, która zawiera funkcję sprawdzania aplikacji, możesz włączyć egzekwowanie. Po włączeniu wymuszania Sprawdzanie aplikacji odrzuci cały ruch bez prawidłowego tokena Sprawdzania aplikacji.

Co wziąć pod uwagę podczas planowania integracji z App Check

Oto kilka kwestii, które warto wziąć pod uwagę podczas planowania integracji:

  • Jeden z zalecanych przez nas dostawców usług weryfikacji, reCAPTCHA Enterprise,pobiera opłaty za ponad 10 tys. oceny miesięcznie.

    Inny polecany przez nas dostawca usług weryfikacji, reCAPTCHA (wersja 3), ma limit, po przekroczeniu którego ruch nie jest już oceniany.

    Możesz użyć niestandardowego dostawcy weryfikacji, ale jest to zaawansowany przypadek użycia. Więcej informacji znajdziesz w dokumentacji App Check.

  • Użytkownicy Twojej aplikacji będą odczuwać pewne opóźnienia podczas uruchamiania. Jednak później okresowe ponowne weryfikowanie będzie odbywać się w tle, a użytkownicy nie powinni już odczuwać opóźnień. Dokładna wartość opóźnienia na starcie zależy od wybranego dostawcy weryfikacji.

    Częstotliwość ponownych weryfikacji zależy od okresu ważności tokena Sprawdzania aplikacji (czasu życia, czyli TTL). Czas trwania można skonfigurować w konsoli Firebase. Ponowne potwierdzenie następuje po upływie około połowy czasu trwania. Więcej informacji znajdziesz w dokumentacji Firebase dotyczącej dostawcy atesta.

Integracja aplikacji z Sprawdzaniem aplikacji

Wymagania wstępne i wymagania

Krok 1. Dodaj Firebase do swojej aplikacji

Aby dodać Firebase do aplikacji, wykonaj instrukcje w dokumentacji dla deweloperów Firebase.

Krok 2. Dodaj bibliotekę App Check i inicjuj App Check

Firebase udostępnia instrukcje dotyczące każdego domyślnego dostawcy weryfikacji. Te instrukcje pokazują, jak skonfigurować projekt Firebase i dodać do aplikacji bibliotekę App Check. Aby zainicjować App Check, postępuj zgodnie z podanymi przykładami kodu.

Krok 3. Wczytaj biblioteki interfejsu Maps JS API

  1. Załaduj biblioteki podstawowe i Mapy zgodnie z tym fragmentem kodu. Więcej informacji i instrukcji znajdziesz w dokumentacji interfejsu Maps JavaScript API.

    async function init() {
      const {Settings} = await google.maps.importLibrary('core');
      const {Map} = await google.maps.importLibrary('maps');
    }  

Krok 4. Inicjuj interfejsy API Map i App Check

  1. Zainicjuj App Check za pomocą konfiguracji dostarczonej przez konsolę Firebase.
  2. Upewnij się, że żądania do interfejsu Maps JS API są opatrzone tokenami Sprawdzania aplikacji:
      import {initializeApp} from 'firebase/app';
      import {
        getToken,
        initializeAppCheck,
        ReCaptchaEnterpriseProvider,
      } from 'firebase/app-check';
        
      async function init() {
        const {Settings} = await google.maps.importLibrary('core');
        const {Map} = await google.maps.importLibrary('maps');
      
        const app = initializeApp({
          // Your firebase configuration object
        });
      
        // Pass your reCAPTCHA Enterprise site key to initializeAppCheck().
        const appCheck = initializeAppCheck(app, {
          provider: new ReCaptchaEnterpriseProvider(
            'abcdefghijklmnopqrstuvwxy-1234567890abcd',
          ),
      
          // Optional argument. If true, the SDK automatically refreshes App Check
          // tokens as needed.
          isTokenAutoRefreshEnabled: true,
        });
      
        Settings.getInstance().fetchAppCheckToken = () =>
            getToken(appCheck, /* forceRefresh = */ false);
      
        // Load a map
        map = new Map(document.getElementById("map"), {
          center: { lat: 37.4161493, lng: -122.0812166 },
          zoom: 8,
        });
      }  
      

Krok 5. Włącz debugowanie (opcjonalnie)

Jeśli chcesz opracowywać i testować aplikację lokalnie lub uruchamiać ją w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugową aplikacji, która używa tajnego klucza debugowania do uzyskiwania prawidłowych tokenów App Check. Dzięki temu nie musisz używać w kompilacji debugowania prawdziwych dostawców uwierzytelniania.

Aby przetestować aplikację lokalnie:

  • Włącz dostawcę debugowania na potrzeby programowania.
  • W logach debugowania pakietu SDK znajdziesz automatycznie wygenerowany losowy identyfikator UUID4 (w dokumentacji App Check nazywany _tokenem debugowania_). Dodaj ten token w konsoli Firebase.
  • Więcej informacji i instrukcji znajdziesz w dokumentacji App Check.

Aby uruchomić aplikację w środowisku CI:

  • Wygeneruj losowy identyfikator UUID4 w konsoli Firebase.
  • Dodaj UUID4 jako token debugowania, a potem skopiuj go do tajnego magazynu, do którego testy CI będą miały dostęp podczas każdego uruchomienia testu.
  • Więcej informacji i instrukcji znajdziesz w dokumentacji App Check.

Krok 6. Monitoruj prośby o aplikację i podejmuj decyzje dotyczące egzekwowania zasad

Zanim zaczniesz egzekwować zasady, upewnij się, że nie zakłócisz działania aplikacji w przypadku jej legalnych użytkowników. W tym celu otwórz ekran danych z aplikacji, aby sprawdzić, jaki odsetek ruchu w Twojej aplikacji jest zweryfikowany, nieaktualny lub nielegalny. Gdy zauważysz, że większość ruchu jest zweryfikowana, możesz włączyć egzekwowanie.

Aby dowiedzieć się więcej i poznać instrukcje, zapoznaj się z dokumentacją Sprawdzania aplikacji Firebase.