Check out what’s new from Firebase at Google I/O 2022. Learn more

Włącz sprawdzanie aplikacji za pomocą reCAPTCHA v3 w aplikacjach internetowych

Na tej stronie pokazano, jak włączyć sprawdzanie aplikacji w aplikacji internetowej przy użyciu wbudowanego dostawcy reCAPTCHA v3. Po włączeniu Kontroli aplikacji zapewniasz, że tylko Twoja aplikacja ma dostęp do zasobów Firebase projektu. Zobacz przegląd tej funkcji.

reCAPTCHA v3 to usługa bezpłatna. App Check obsługuje również reCAPTCHA Enterprise , płatną usługę z limitem bezpłatnym. Aby poznać różnice między reCAPTCHA v3 i reCAPTCHA Enterprise, zobacz porównanie funkcji .

Pamiętaj, że reCAPTCHA v3 jest niewidoczny dla użytkowników. Dostawca reCAPTCHA v3 nie będzie wymagał od użytkowników rozwiązywania problemów w dowolnym momencie. Zobacz dokumentację reCAPTCHA v3 .

Jeśli chcesz korzystać z funkcji App Check z własnym niestandardowym dostawcą, zobacz Implementowanie niestandardowego dostawcy App Check .

1. Skonfiguruj projekt Firebase

  1. Dodaj Firebase do swojego projektu JavaScript, jeśli jeszcze tego nie zrobiłeś.

  2. Zarejestruj swoją witrynę w reCAPTCHA v3 i uzyskaj klucz witryny reCAPTCHA v3 oraz tajny klucz.

  3. Zarejestruj swoje aplikacje, aby korzystać z funkcji Sprawdzanie aplikacji u dostawcy reCAPTCHA w sekcji Sprawdzanie aplikacji w konsoli Firebase. Musisz podać tajny klucz , który otrzymałeś w poprzednim kroku.

    Zwykle musisz zarejestrować wszystkie aplikacje swojego projektu, ponieważ po włączeniu wymuszania dla produktu Firebase tylko zarejestrowane aplikacje będą miały dostęp do zasobów zaplecza produktu.

  4. Opcjonalnie : w ustawieniach rejestracji aplikacji ustaw niestandardowy czas wygaśnięcia (TTL) dla tokenów sprawdzania aplikacji wydanych przez dostawcę. Możesz ustawić TTL na dowolną wartość z zakresu od 30 minut do 7 dni. Zmieniając tę ​​wartość, pamiętaj o następujących kompromisach:

    • Bezpieczeństwo: Krótsze czasy TTL zapewniają większe bezpieczeństwo, ponieważ zmniejszają okno, w którym przeciek lub przechwycony token może zostać nadużyty przez atakującego.
    • Wydajność: krótsze czasy TTL oznaczają, że aplikacja będzie częściej przeprowadzać atestację. Ponieważ proces zaświadczania aplikacji zwiększa opóźnienie żądań sieciowych za każdym razem, gdy jest wykonywany, krótki czas TTL może wpłynąć na wydajność aplikacji.
    • Limit i koszt: krótsze czasy oczekiwania i częste ponowna atestacja szybciej zmniejszają limit, a w przypadku usług płatnych potencjalnie kosztują więcej. Zobacz Kontyngenty i limity .

    Domyślny czas TTL wynoszący 1 dzień jest rozsądny dla większości aplikacji. Zwróć uwagę, że biblioteka App Check odświeża tokeny po około połowie czasu TTL.

2. Dodaj bibliotekę Sprawdzanie aplikacji do swojej aplikacji

Dodaj Firebase do swojej aplikacji internetowej , jeśli jeszcze tego nie zrobiłeś. Pamiętaj, aby zaimportować bibliotekę Sprawdzanie aplikacji.

3. Zainicjuj sprawdzanie aplikacji

Dodaj następujący kod inicjujący do swojej aplikacji, zanim uzyskasz dostęp do jakichkolwiek usług Firebase. Będziesz musiał przekazać swój klucz witryny reCAPTCHA, który utworzyłeś w konsoli reCAPTCHA, aby activate() .

Web version 9

const { initializeApp } = require("firebase/app");
const { initializeAppCheck, ReCaptchaV3Provider } = require("firebase/app-check");

const app = initializeApp({
  // Your firebase configuration object
});

// Pass your reCAPTCHA v3 site key (public key) to activate(). Make sure this
// key is the counterpart to the secret key you set in the Firebase console.
const appCheck = initializeAppCheck(app, {
  provider: new ReCaptchaV3Provider('abcdefghijklmnopqrstuvwxy-1234567890abcd'),

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  isTokenAutoRefreshEnabled: true
});

Web version 8

firebase.initializeApp({
  // Your firebase configuration object
});

const appCheck = firebase.appCheck();
// Pass your reCAPTCHA v3 site key (public key) to activate(). Make sure this
// key is the counterpart to the secret key you set in the Firebase console.
appCheck.activate(
  'abcdefghijklmnopqrstuvwxy-1234567890abcd',

  // Optional argument. If true, the SDK automatically refreshes App Check
  // tokens as needed.
  true);

Po zainstalowaniu biblioteki App Check w Twojej aplikacji wdróż ją.

Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny sprawdzania aplikacji wraz z każdym żądaniem wysłanym do Firebase, ale produkty Firebase nie będą wymagać, aby tokeny były ważne, dopóki nie włączysz wymuszania w sekcji Sprawdzanie aplikacji w konsoli Firebase. Szczegółowe informacje znajdziesz w dwóch następnych sekcjach.

4. Monitoruj metryki żądań

Teraz, gdy zaktualizowana aplikacja jest w rękach użytkowników, możesz włączyć wymuszanie sprawdzania aplikacji dla używanych produktów Firebase. Jednak zanim to zrobisz, upewnij się, że nie zakłóci to istniejących legalnych użytkowników.

Baza danych czasu rzeczywistego, Cloud Firestore i Cloud Storage

Ważnym narzędziem, którego możesz użyć do podjęcia tej decyzji w przypadku Bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Storage, jest ekran metryk żądania sprawdzania aplikacji.

Aby wyświetlić metryki żądania sprawdzenia aplikacji dla produktu, otwórz sekcję Sprawdzanie aplikacji w konsoli Firebase. Na przykład:

Zrzut ekranu strony z danymi Sprawdzanie aplikacji

Wskaźniki żądań dla każdego produktu są podzielone na cztery kategorie:

  • Zweryfikowane żądania to te, które mają ważny token sprawdzania aplikacji. Po włączeniu wymuszania sprawdzania aplikacji kończą się tylko żądania z tej kategorii.

  • Nieaktualne żądania klientów to te, w których brakuje tokena sprawdzania aplikacji. Te żądania mogą pochodzić ze starszej wersji pakietu SDK Firebase, zanim funkcja App Check została uwzględniona w aplikacji.

  • Żądania o nieznanym pochodzeniu to te, w których brakuje tokena sprawdzania aplikacji i nie wyglądają na pochodzące z pakietu Firebase SDK. Mogą to być żądania wysłane przy użyciu skradzionych kluczy API lub sfałszowane żądania wysłane bez pakietu Firebase SDK.

  • Nieprawidłowe żądania to te, które mają nieprawidłowy token sprawdzania aplikacji, który może pochodzić od nieautentycznego klienta próbującego podszyć się pod Twoją aplikację lub z emulowanych środowisk.

Dystrybucja tych kategorii dla Twojej aplikacji powinna informować, kiedy zdecydujesz się włączyć wymuszanie. Oto kilka wskazówek:

  • Jeśli prawie wszystkie ostatnie żądania pochodzą od zweryfikowanych klientów, rozważ włączenie wymuszania, aby zacząć chronić zasoby zaplecza.

  • Jeśli znaczna część ostatnich żądań pochodzi od prawdopodobnie nieaktualnych klientów, aby uniknąć zakłócania pracy użytkowników, rozważ poczekanie, aż więcej użytkowników zaktualizuje aplikację, zanim włączysz wymuszanie. Wymuszanie sprawdzania aplikacji w wydanej aplikacji spowoduje uszkodzenie wcześniejszych wersji aplikacji, które nie są zintegrowane z pakietem SDK sprawdzania aplikacji.

  • Jeśli Twoja aplikacja nie została jeszcze uruchomiona, natychmiast włącz wymuszanie sprawdzania aplikacji, ponieważ nie są używane żadne nieaktualne klienty.

Funkcje chmury

W przypadku Cloud Functions możesz uzyskać metryki App Check, sprawdzając dzienniki swoich funkcji. Każde wywołanie funkcji wywoływanej emituje wpis w dzienniku strukturalnym, jak w poniższym przykładzie:

{
  "severity": "INFO",    // INFO, WARNING, or ERROR
  "logging.googleapis.com/labels": {"firebase-log-type": "callable-request-verification"},
  "jsonPayload": {
    "message": "Callable header verifications passed.",
    "verifications": {
      // ...
      "app": "MISSING",  // VALID, INVALID, or MISSING
    }
  }
}

Możesz analizować te dane w Google Cloud Console, tworząc oparte na logach dane liczników z następującym filtrem danych:

resource.type="cloud_function"
resource.labels.function_name="YOUR_CLOUD_FUNCTION"
resource.labels.region="us-central1"
labels.firebase-log-type="callable-request-verification"

Oznacz metrykę w polu jsonPayload.verifications.appCheck .

5. Włącz wymuszanie

Aby włączyć egzekwowanie, postępuj zgodnie z instrukcjami dla każdego produktu poniżej. Po włączeniu wymuszania dla produktu wszystkie niezweryfikowane żądania dotyczące tego produktu zostaną odrzucone.

Baza danych czasu rzeczywistego, Cloud Firestore i Cloud Storage

Aby włączyć wymuszanie dla Bazy danych czasu rzeczywistego, Cloud Firestore (iOS i Android) oraz Cloud Storage:

  1. Otwórz sekcję Sprawdzanie aplikacji w konsoli Firebase.

  2. Rozwiń widok danych produktu, dla którego chcesz włączyć egzekwowanie.

  3. Kliknij Egzekwuj i potwierdź swój wybór.

Pamiętaj, że włączenie wymuszania może potrwać do 15 minut.

Funkcje chmury

Zobacz Włączanie wymuszania sprawdzania aplikacji dla Cloud Functions .

Następne kroki

Jeśli po zarejestrowaniu aplikacji do sprawdzania aplikacji chcesz uruchomić aplikację w środowisku, którego Sprawdzanie aplikacji normalnie nie klasyfikowałoby się jako prawidłowe, na przykład lokalnie podczas opracowywania lub ze środowiska ciągłej integracji (CI), możesz utworzyć kompilacja debugowania Twojej aplikacji, która używa dostawcy debugowania sprawdzania aplikacji zamiast rzeczywistego dostawcy poświadczania.

Zobacz Używanie sprawdzania aplikacji z dostawcą debugowania w aplikacjach internetowych .