Implementierung der reCAPTCHA Enterprise für WAF- und Google Cloud Armor-Integrationsfunktionen

In diesem Dokument erfahren Sie, wie Sie die reCAPTCHA-Problemseite, reCAPTCHA-Aktionstokens und reCAPTCHA-Sitzungstokens für Google Cloud Armor implementieren.

Hinweis

Um reCAPTCHA-Aktions- oder Sitzungs-Tokens zu verwenden, aktivieren Sie die reCAPTCHA Enterprise API mithilfe der folgenden Schritte:

  1. Rufen Sie in der Cloud Console die Seite reCAPTCHA Enterprise API auf.

    Zur reCAPTCHA Enterprise API

  2. Prüfen Sie, ob der Name Ihres Projekts in der Projektauswahl oben auf der Seite angezeigt wird.

    Wenn Sie den Namen Ihres Projekts nicht sehen, klicken Sie auf die Projektauswahl und wählen Sie Ihr Projekt aus.

  3. Klicken Sie auf Aktivieren.

reCAPTCHA-Abruf implementieren

Es gibt keine Implementierungsschritte für die reCAPTCHA-Herausforderungsseite, da reCAPTCHA Enterprise die Implementierung automatisch durchführt.

Im nächsten Schritt konfigurieren Sie die Google Cloud Armor-Sicherheitsrichtlinien.

reCAPTCHA-Aktionstokens implementieren

reCAPTCHA Enterprise muss auf Ihren Webseiten ausgeführt werden, um Aktionstokens zu generieren. Nachdem reCAPTCHA Enterprise ein Aktionstoken generiert hat, hängen Sie das Token an einen vordefinierten Anfrageheader an, wo Sie Nutzeraktionen wie den Checkout schützen müssen. Aktionstokens sind standardmäßig 30 Minuten lang gültig und können kürzer sein. Daher müssen Sie das Aktionstoken vor dem Ablauf des Tokens an einen vordefinierten Anfrageheader anhängen, damit Google Cloud Armor die Tokenattribute auswerten kann.

So implementieren Sie ein reCAPTCHA-Aktionstoken:

  1. Erstellen Sie einen neuen auf Punktzahlen basierenden reCAPTCHA-Schlüssel oder Kästchen für einen Websiteschlüssel.
  2. Senden Sie den Websiteschlüssel an recaptcha-waf-eng@google.com, um das Aktionstoken-Feature für den Websiteschlüssel zu aktivieren.
  3. Nachdem das Aktionstoken-Feature für den Websiteschlüssel aktiviert wurde, erhalten Sie eine Bestätigungs-E-Mail.
  4. Installieren Sie auf Ihren Webseiten den aktivierten Websiteschlüssel. Eine Anleitung finden Sie im Dokument, das Ihrem Websiteschlüssel entspricht:

  5. Nachdem Sie das Token von reCAPTCHA Enterprise erhalten haben, hängen Sie es an einen vordefinierten Anfrageheader im folgenden Format an:

       X-Recaptcha-Token:value-of-your-action-token
    

    Sie können Sprachen wie XHR, Ajax und Fetch API verwenden, um das Token an einen vordefinierten Anfrage-Header anzuhängen.

Das folgende Beispielskript zeigt, wie die Ausführungsaktion geschützt und das Token mithilfe von JavaScript + XHR an einen vordefinierten Anfrage-Header angehängt wird:

    <script src="https://www.google.com/recaptcha/enterprise.js?render=SITE_KEY_ACTION_TOKEN_ENABLED"></script>

    <script>

     function onSuccess(action_token) {
       const xhr = new XMLHttpRequest();
       xhr.open('GET','YOUR_URL', false);
       // Attach the action-token to the predefined request header
       xhr.setRequestHeader("X-Recaptcha-Token", action_token);
       xhr.send(null);
     }

     function onError(reason) {
       alert('Response promise rejected: ' + reason);
     }

     grecaptcha.enterprise.ready(function () {
       document.getElementById("execute-button").onclick = () => {
         grecaptcha.enterprise.execute('SITE_KEY_ACTION_TOKEN_ENABLED', {
         }).then(onSuccess, onError);
       };
     });
    </script>

Im nächsten Schritt konfigurieren Sie die Google Cloud Armor-Sicherheitsrichtlinien.

reCAPTCHA-Sitzungstokens implementieren

Das reCAPTCHA-JavaScript legt nach der Bewertung ein reCAPTCHA-Sitzungstoken als Cookie im Browser des Endnutzers fest. Der Browser des Endnutzers hängt das Cookie an und aktualisiert das Cookie, solange das reCAPTCHA-JavaScript aktiv bleibt.

Um ein Sitzungs-Token als Cookie bereitzustellen, installieren Sie einen auf einem reCAPTCHA-Wert basierenden Websiteschlüssel auf mindestens einer Ihrer Webseiten, die die folgenden Anforderungen erfüllen:

  • Die Webseite muss die Seite sein, die der Endnutzer aufruft, bevor die Seite geschützt werden muss. Wenn Sie beispielsweise die Kassenseite schützen möchten, installieren Sie den auf dem reCAPTCHA-Score basierenden Websiteschlüssel auf der Startseite oder der Produktseite.
  • Die Webseite wird durch eine Google Cloud Armor-Sicherheitsrichtlinie geschützt.

Mit diesem Cookie können Sie nachfolgende Anfragen des Nutzers und das Laden der Seite in einer bestimmten Domain schützen. Sitzungstokens sind standardmäßig 30 Minuten lang gültig. Wenn der Nutzer jedoch auf der Seite verbleibt, auf der Sie das Sitzungstoken implementiert haben, aktualisiert reCAPTCHA Enterprise das Sitzungstoken regelmäßig, um zu verhindern, dass es abläuft.

Installieren Sie Sitzungs-Tokens auf jeder Seite, die durch reCAPTCHA Enterprise geschützt werden muss. Wir empfehlen, reCAPTCHA Enterprise auf jeder Seite zu installieren und Google Cloud Armor-Regeln zu verwenden, um den Zugriff auf allen Seiten zu erzwingen, mit Ausnahme der ersten Seite, die Endnutzer durchsuchen.

Hier ist ein Beispiel für ein reCAPTCHA-Sitzungstoken:

   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

So implementieren Sie ein reCAPTCHA-Sitzungstoken:

  1. Erstellen Sie einen neuen auf Punktzahlen basierenden Websiteschlüssel für reCAPTCHA.
  2. Senden Sie den Websiteschlüssel an recaptcha-waf-eng@google.com, um das Sitzungstoken-Feature für den Websiteschlüssel zu aktivieren.
  3. Nachdem das Sitzungs-Token-Feature für den Websiteschlüssel aktiviert wurde, erhalten Sie eine Bestätigungs-E-Mail.
  4. Fügen Sie dem reCAPTCHA-JavaScript den Websiteschlüssel hinzu, der mit dem Sitzungs-Token-Feature und waf=session aktiviert ist.

Das folgende Beispielskript zeigt, wie ein Sitzungs-Token auf einer Webseite implementiert wird:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>reCAPTCHA WAF Session Token</title>
     <script src="https://www.google.com/recaptcha/enterprise.js?render=SITE_KEY_SESSION_TOKEN_ENABLED&waf=session" async defer></script>
    </head>
  </html>

Im nächsten Schritt konfigurieren Sie die Google Cloud Armor-Sicherheitsrichtlinien.

Beispiele für die Verwendung mehrerer Features in einer einzelnen Anwendung

Sie können ein oder mehrere reCAPTCHA Enterprise für WAF-Funktionen in einer einzelnen Anwendung verwenden.

Beispiel 1: reCAPTCHA-Sitzungstokens und reCAPTCHA-Abfrageseite verwenden

Sie können auf Seiten, auf die ein Nutzer zugreifen kann, ein reCAPTCHA-Sitzungstoken hinzufügen, damit das Cookie regelmäßig aktualisiert wird, z. B. eine Anmeldeseite. Konfigurieren Sie die Sicherheitsrichtlinienregel von Google Cloud Armor, um die Anfrage an die reCAPTCHA-Herausforderungsseite weiterzuleiten, wenn die Punktzahl niedrig ist.

Die folgende Abbildung zeigt einen Workflow, der Features der reCAPTCHA-Sitzungstoken- und reCAPTCHA-Herausforderung verwendet:

Beispiel 2: reCAPTCHA-Aktionstokens und reCAPTCHA-Abfrageseite verwenden

Sie können ein reCAPTCHA-Aktionstoken hinzufügen, um eine Nutzeraktion zu schützen, z. B. Checkout. Konfigurieren Sie die Sicherheitsrichtlinienregel für Google Cloud Armor, um die Anfrage unter einer der folgenden Bedingungen an die reCAPTCHA-Herausforderungsseite weiterzuleiten:

  • Die Punktzahl ist niedrig.
  • Das Attribut action_name des Aktionstokens stimmt nicht mit der geschützten Nutzeraktion überein.

Die folgende Abbildung zeigt einen Workflow, der Features der reCAPTCHA-Aktions- und reCAPTCHA-Herausforderung verwendet:

Das folgende Beispielskript zeigt, wie ein reCAPTCHA-Aktionstoken verwendet und zur reCAPTCHA-Herausforderungsseite weitergeleitet wird, wobei das Aktionstoken als Header angehängt wird:

   <script src="https://www.google.com/recaptcha/enterprise.js?render=SITE_KEY_ACTION_TOKEN_ENABLED"></script>
    <script>
     function onSuccess(token) {
       const xhr = new XMLHttpRequest();
       xhr.open('GET','http://www.abc.com/checkout', false);
       xhr.setRequestHeader("X-Recaptcha-Token", token);
       xhr.onreadystatechange = function() {
         // Make sure that the request is finished and response is ready with 200
         if (this.readyState == 4 && this.status == 200) {
           // Display the response, it could be the reCAPTCHA challenge
           // page based on your Google Cloud Armor security rule settings.
            document.open();
            document.write(xhr.responseText);
            document.close();

         }
       };
       xhr.send(null);
     }

     grecaptcha.enterprise.ready(function () {
       document.getElementById("execute-button").onclick = () => {
         grecaptcha.enterprise.execute('SITE_KEY_ACTION_TOKEN_ENABLED', {
         }).then(onSuccess, onError);
       };
     });
    </script>

Nächste Schritte