Catch up on everything we announced at this year's Firebase Summit. Learn more

App Check mit reCAPTCHA v3 in Web-Apps aktivieren

Auf dieser Seite erfahren Sie, wie Sie App Check in einer Web-App mithilfe des integrierten reCAPTCHA v3-Anbieters aktivieren. Wenn Sie App Check aktivieren, tragen Sie dazu bei, dass nur Ihre App auf die Firebase-Ressourcen Ihres Projekts zugreifen kann. Sehen Sie eine Übersicht dieser Funktion.

reCAPTCHA v3 ist ein kostenloser Dienst. App prüfen unterstützt auch reCAPTCHA Unternehmen , ein kostenpflichtiger Service mit einem kostenlosen Kontingent. Um die Unterschiede zwischen reCAPTCHA v3 und reCAPTCHA Unternehmen finden Sie auf den Vergleich von Funktionen .

Beachten Sie, dass reCAPTCHA v3 für Benutzer unsichtbar ist. Der reCAPTCHA v3-Anbieter verlangt von den Benutzern zu keinem Zeitpunkt, eine Herausforderung zu lösen. Siehe die reCAPTCHA v3 Dokumentation .

Wenn Sie App überprüfen mit Ihrem eigenen Provider nutzen möchten, finden Sie ein Check - Provider benutzerdefinierte App implementieren .

1. Richten Sie Ihr Firebase-Projekt ein

  1. In Firebase zu Ihrem JavaScript - Projekt , wenn Sie nicht bereits getan haben.

  2. Registrieren Sie Ihre Website für reCAPTCHA v3 und erhalten Sie Ihre reCAPTCHA v3 Site - Schlüssel und geheimen Schlüssel.

  3. Registrieren Sie Ihre Apps App Informieren Sie sich beim reCAPTCHA Anbieter in den verwenden Projekteinstellungen> App überprüfen Abschnitt der Konsole Firebase. Sie müssen den geheimen Schlüssel schaffen , die Sie im vorherigen Schritt bekommen.

    Normalerweise müssen Sie alle Apps Ihres Projekts registrieren, denn sobald Sie die Durchsetzung für ein Firebase-Produkt aktivieren, können nur registrierte Apps auf die Back-End-Ressourcen des Produkts zugreifen.

  4. Optional: In den App - Registrierungseinstellungen, stellen Sie eine benutzerdefinierte Time-to-Live (TTL) für App überprüfen vom Provider ausgegeben Token. Sie können die TTL auf einen beliebigen Wert zwischen 30 Minuten und 7 Tagen einstellen. Beachten Sie beim Ändern dieses Werts die folgenden Kompromisse:

    • Sicherheit: Kürzere TTLs bieten eine höhere Sicherheit, da sie das Zeitfenster verringern, in dem ein durchgesickertes oder abgefangenes Token von einem Angreifer missbraucht werden kann.
    • Leistung: Kürzere TTLs bedeuten, dass Ihre App die Bestätigung häufiger durchführt. Da der App-Bestätigungsprozess bei jeder Ausführung Latenz zu Netzwerkanforderungen hinzufügt, kann eine kurze TTL die Leistung Ihrer App beeinträchtigen.
    • Kontingent und Kosten: Kürzere TTLs und häufige erneute Beglaubigungen verbrauchen Ihr Kontingent schneller und kosten für kostenpflichtige Dienste möglicherweise mehr. Siehe Quotas & Grenzen .

    Die Standard - TTL 1 Tag ist sinnvoll für die meisten Anwendungen. Beachten Sie, dass die App Check-Bibliothek Token mit ungefähr der Hälfte der TTL-Dauer aktualisiert.

2. Fügen Sie die App Check-Bibliothek zu Ihrer App hinzu

In Firebase zu Ihrem Web - App , wenn Sie nicht bereits haben. Achten Sie darauf, die App Check-Bibliothek zu importieren.

3. App-Check initialisieren

Fügen Sie Ihrer Anwendung den folgenden Initialisierungscode hinzu, bevor Sie auf Firebase-Dienste zugreifen. Sie müssen Ihre reCAPTCHA Website Schlüssel zu übergeben, die Sie in der reCAPTCHA Konsole erstellt, auf activate() .

Webversion 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
});

Webversion 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);

Sobald die App Check-Bibliothek in Ihrer App installiert ist, stellen Sie sie bereit.

Die aktualisierte Client-App beginnt mit dem Senden von App Check-Tokens zusammen mit jeder Anfrage an Firebase, aber Firebase-Produkte benötigen die Token erst dann gültig, wenn Sie die Durchsetzung im App Check-Bereich der Firebase-Konsole aktivieren. Weitere Informationen finden Sie in den nächsten beiden Abschnitten.

4. Anforderungsmetriken überwachen

Da sich Ihre aktualisierte App nun in den Händen der Benutzer befindet, können Sie die Durchsetzung der App-Prüfung für die von Ihnen verwendeten Firebase-Produkte aktivieren. Bevor Sie dies tun, sollten Sie jedoch sicherstellen, dass Ihre bestehenden legitimen Benutzer dadurch nicht gestört werden.

Echtzeitdatenbank, Cloud Firestore und Cloud Storage

Ein wichtiges Tool, mit dem Sie diese Entscheidung für Realtime Database, Cloud Firestore und Cloud Storage treffen können, ist der Bildschirm mit den App Check-Anforderungsmetriken.

Die App prüfen Anfrage Metriken für ein Produkt, öffnen Sie das sehen , Projekteinstellungen> App überprüfen Abschnitt der Konsole Firebase. Zum Beispiel:

Screenshot der Seite mit den App-Check-Metriken

Die Anforderungsmetriken für jedes Produkt sind in vier Kategorien unterteilt:

  • Verifizierte Anfragen sind diejenigen , die eine gültige App prüfen Token haben. Nachdem Sie die Durchsetzung der App-Prüfung aktiviert haben, werden nur Anforderungen in dieser Kategorie erfolgreich ausgeführt.

  • Veraltete Client - Anfragen sind diejenigen , die eine App überprüfen Token fehlen. Diese Anfragen stammen möglicherweise von einer älteren Version des Firebase SDK, bevor App Check in die App aufgenommen wurde.

  • Unbekannte Herkunft Anfragen sind diejenigen , die eine App prüfen Token fehlen, und nicht schauen , wie sie aus dem Firebase SDK kommen. Diese können von Anfragen mit gestohlenen API-Schlüsseln oder gefälschten Anfragen ohne das Firebase SDK stammen.

  • Ungültige Anfragen sind diejenigen , die eine ungültige App überprüfen Token, die von einem unechten Client sein könnten versuchen , Ihre App zu imitieren, oder von emulierten Umgebungen.

Die Verteilung dieser Kategorien für Ihre App sollte Sie informieren, wenn Sie sich entscheiden, die Durchsetzung zu aktivieren. Hier sind einige Richtlinien:

  • Wenn fast alle der letzten Anfragen von verifizierten Clients stammen, sollten Sie die Durchsetzung aktivieren, um Ihre Back-End-Ressourcen zu schützen.

  • Wenn ein erheblicher Teil der jüngsten Anfragen von wahrscheinlich veralteten Clients stammt, sollten Sie zur Vermeidung von Störungen der Benutzer in Erwägung ziehen, zu warten, bis mehr Benutzer Ihre App aktualisieren, bevor Sie die Erzwingung aktivieren. Durch das Erzwingen der App-Überprüfung für eine veröffentlichte App werden frühere App-Versionen, die nicht in das App Check-SDK integriert sind, unterbrochen.

  • Wenn Ihre App noch nicht gestartet wurde, sollten Sie die App-Check-Erzwingung sofort aktivieren, da keine veralteten Clients verwendet werden.

Cloud-Funktionen

Für Cloud Functions können Sie App Check-Messwerte abrufen, indem Sie die Logs Ihrer Funktionen untersuchen. Jeder Aufruf einer Callable Function gibt einen strukturierten Log-Eintrag wie im folgenden Beispiel aus:

{
  "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
    }
  }
}

Sie können diese Messwerte in der Google Cloud Console analysieren , indem sie die Schaffung eines Logs basierten Zähler Metrik mit dem folgenden metrischen Filter:

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

Beschriften die Metrik unter Verwendung des Feldes jsonPayload.verifications.appCheck .

5. Durchsetzung aktivieren

Um die Durchsetzung zu aktivieren, befolgen Sie die Anweisungen für jedes Produkt unten. Sobald Sie die Durchsetzung für ein Produkt aktivieren, werden alle unbestätigten Anfragen an dieses Produkt abgelehnt.

Echtzeitdatenbank, Cloud Firestore und Cloud Storage

So aktivieren Sie die Durchsetzung für Realtime Database, Cloud Firestore (iOS und Android) und Cloud Storage:

  1. Öffnen Sie die Projekteinstellungen> App überprüfen Abschnitt der Konsole Firebase.

  2. Erweitern Sie die Messwertansicht des Produkts, für das Sie die Durchsetzung aktivieren möchten.

  3. Klicken Sie Erzwingen und bestätigen Sie Ihre Auswahl.

Beachten Sie, dass es nach der Aktivierung der Durchsetzung bis zu 10 Minuten dauern kann, bis sie wirksam wird.

Cloud-Funktionen

Siehe Aktivieren App Überprüfen Durchsetzung für Cloud - Funktionen .

Nächste Schritte

Wenn Sie Ihre App nach der Registrierung für App Check in einer Umgebung ausführen möchten, die App Check normalerweise nicht als gültig einstufen würde, z. B. lokal während der Entwicklung oder aus einer Continuous Integration (CI)-Umgebung, können Sie ein Debugbuild Ihrer App, der den App Check-Debuganbieter anstelle eines echten Attestierungsanbieters verwendet.

Siehe Verwenden App überprüfen Sie mit den Debug - Provider in Web - Anwendungen .