Kontoübernahmen erkennen und verhindern

Auf dieser Seite wird beschrieben, wie Sie mithilfe von reCAPTCHA Enterprise Kontoübernahmen (ATOs) erkennen und verhindern.

ATO-Angriffe treten normalerweise auf, wenn ein Angreifer Anfragen zur Anmeldung bei API-Endpunkten sendet. Dazu werden Anmeldedaten verwendet, die von einer Datenpanne stammen. Diese werden auch als Passwort-Dump bezeichnet. Diese Art von Angriff kann erfolgreich sein, selbst wenn der Kennwort-dump von einer anderen Website stammt, da Menschen dazu neigen, Kennwörter über mehrere Konten hinweg wiederzuverwenden. Diese Art von Angriff hat keine Auswirkungen auf Nutzer mit ordnungsgemäßer Passworthygiene, z. B. bei der Verwendung eines Passwortmanagers.

Mit reCAPTCHA Enterprise können Sie ATOs mit einer der folgenden Optionen erkennen und verhindern:

Kästchen „Ich bin kein Roboter“ verwenden

Das Hinzufügen des Kästchens Ich bin kein Roboter zu deiner Website ist der schnellste und einfachste Weg, um Schutz vor ATOs zu bieten, ohne zusätzliche Funktionen wie SMS oder E-Mail-Bestätigung integrieren zu müssen. aus. Für einen Angreifer fallen Kosten an, um diesen Schutz zu durchbrechen. Diese Option ist für einige Websites möglicherweise ausreichend.

Fügen Sie das Kästchen „Ich bin kein Roboter“ auf Ihren Webseiten hinzu.

Hier sehen Sie ein Beispiel für eine einfache Anmeldeseite, die durch ein Kästchen geschützt ist.

function onSuccess(token) {
  // The token is included in the POST data in the g-recaptcha-response
  // parameter. The backend must create an Assessment with the token
  // and verify the token is valid.
  console.log(token);
}
<form id="loginForm" action="?" method="POST">
  Username: <input type="text" name="username"/><br/>
  Password: <input type="password" name="password"/><br/>
  <div class="g-recaptcha" data-sitekey="reCATCHA_sitekey"
       data-action="account_login" data-callback="onSuccess"></div>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

Sie können mit diesem Code in JSFiddle experimentieren. Klicken Sie dazu in der oberen rechten Ecke des Codefensters auf das Symbol <>.

<html>
  <head>
    <title>Account Login - Checkbox</title>
    <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
    <script>
    function onSuccess(token) {
      // The token is included in the POST data in the g-recaptcha-response
      // parameter. The backend must create an Assessment with the token
      // and verify the token is valid.
      console.log(token);
    }
    </script>
  </head>
  <body>
    <form id="loginForm" action="?" method="POST">
      Username: <input type="text" name="username"/><br/>
      Password: <input type="password" name="password"/><br/>
      <div class="g-recaptcha" data-sitekey="6LeAkOgUAAAAACcy3uY6N9H9SJMS27n3Zx2OOnYK"
           data-action="account_login" data-callback="onSuccess"></div>
    </form>
  </body>
</html>

Punktzahlen und benutzerdefinierte Abfragen verwenden

Der beste Schutz vor ATOs besteht darin, die auf reCAPTCHA-Punktzahlen basierenden Websiteschlüssel zu verwenden und Multi-Faktor-Authentifizierung (MFA) wie E-Mail- und SMS-Abfragen mit Einmal-Codes („One-time password“, OTPs) zu verwenden, die an den Nutzer gesendet werden.

Ziehen Sie zum Schutz vor ATOs die folgenden Optionen in Betracht:

Je nach Anwendungsfall können Sie MFA allein oder mit Punktzahl-basierten Websiteschlüsseln verwenden. Sie können beispielsweise MFA-Herausforderungen nur für Punktzahlen unter einem bestimmten Schwellenwert verwenden, um Reibungspunkte zu reduzieren.

Das folgende Beispiel zeigt, wie punktzahlbasierte Websiteschlüssel in das Anmeldeszenario integriert werden.

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("loginForm").submit();
    });
  });
}
<form id="loginForm" action="?" method="POST">
  Username: <input type="text" name="username"/><br/>
  Password: <input type="password" name="password"/><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Login</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

Sie können mit diesem Code in JSFiddle experimentieren. Klicken Sie dazu in der oberen rechten Ecke des Codefensters auf das Symbol <>.

<html>
  <head>
    <title>Account Login - Score</title>
    <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("loginForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="loginForm" action="?" method="POST">
      Username: <input type="text" name="username"/><br/>
      Password: <input type="password" name="password"/><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Login</button>
    </form>
  </body>
</html>