Java >> Java Tutorial >  >> Tag >> Spring

So integrieren Sie reCaptcha in die Spring Boot-Anwendung

In diesem Beitrag möchte ich zeigen, wie man ReCaptcha in eine Spring Boot-Anwendung integriert. Dies ist ein wichtiger Schritt, wenn Ihre Bewerbung Formulare enthält und diese Formulare öffentlich im Internet verfügbar sind. Sie können mit vielen Spams oder Bots konfrontiert werden, die versuchen, diese Formulare auszufüllen. Um diese Spams von Bots zu vermeiden, ist ReCaptcha von größter Bedeutung.

Google bietet einen reCaptcha-Dienst an, den wir in die Spring Boot-Anwendung integrieren werden, um zu verhindern, dass Bots die Formulare in unserer Anwendung senden.

Registrierung bei Google für ReCaptcha

Google bietet einen reCaptcha-Dienst an, den Entwickler in ihren Anwendungen verwenden können. Als Teil dieser Implementierung werden wir unseren Dienst in Google APIs registrieren, damit Google uns Anmeldeinformationen zur Verfügung stellen kann, die wir beim Aufrufen seines Dienstes verwenden können.

Wir können unsere Website bei der Google Recaptcha Administration registrieren. Diese Registrierung liefert uns site-key und site-secret .

Als Teil der Spring Boot-Anwendung können wir diese Anmeldeinformationen jetzt in application.properties speichern Datei wie folgt:

# ====================================================================================
# Google reCaptcha Settings
# ====================================================================================
google.recaptcha.key.site=site-key
google.recaptcha.key.secret=site-secret

Wir stellen diese Eigenschaften über ein Spring-Bean-Objekt in unserer Anwendung zur Verfügung, damit wir sie verwenden können, wenn wir den Google Recaptcha-Dienst aufrufen.

Benutzeroberfläche ändert sich, um das ReCaptcha-Feld anzuzeigen

Um nun das Recaptcha-Feld in Ihrem Formular anzuzeigen, fügen wir den folgenden Code in unsere Vorlagen ein, in denen sich unser öffentliches Formular befindet. In diesem Fall füge ich das Recaptcha-Feld in Contact Us ein und Sign Up Seiten, da diese öffentlich zugängliche Formulare sind.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Renters Feedback</title>

    <!-- other scripts and stylesheets -->
    <script src='https://www.google.com/recaptcha/api.js'></script>

</head>
<body>

<form method = "post" id="contactus" th:action="@{/contact}">
<!--- other code to display contact us form -->
<div class="g-recaptcha" th:attr="data-sitekey=${@captchaSettings.getSite()}"></div><br/><br/>
<span id="captchaError" class="alert alert-danger col-sm-4" style="display:none"></span>
</form>

</body>
</html>

Serverseitige Handhabung von ReCaptcha

Wir haben also ein Widget in unserem Formular. Wenn ein Benutzer eine Herausforderung ausfüllt und das Formular absendet, wird die Anfrage an den Server gesendet, die einen verschlüsselten Site-Schlüssel und eine eindeutige Zeichenfolge enthält, die den Abschluss der Herausforderung durch den Benutzer identifiziert.

Aber auf der Serverseite können wir nicht einfach annehmen und vertrauen, was der Benutzer übermittelt hat. Daher müssen wir diese Captcha-Herausforderung überprüfen, indem wir eine Anfrage an die Google API unter https://www.google.com/recaptcha/api/siteverify senden durch Passieren der Captcha-Antwort, die wir erhalten haben.

Wenn die Überprüfung erfolgreich ist, enthält die JSON-Antwort von der API einen Erfolgsparameter.

Wenn die Überprüfung fehlschlägt, löst eine Anwendung eine Ausnahme aus und die reCaptcha-Bibliothek weist einen Client an, eine neue Herausforderung zu erstellen.

Eine Sache, die Sie hier verstehen sollten, ist, dass wir die Anzahl der Versuche begrenzen, die ein Kunde für die reCaptcha-Herausforderung unternehmen kann. Der Grund dafür ist, jede Art von DoS-Angriff zu vermeiden. Natürlich ist dies ein vorsorglicher und elementarer Schritt. Wir implementieren ReCaptchaAttemptService, um zu blockieren, wenn ein Client versucht, die Herausforderung für mehr als 4 Versuche zu verwenden.

Demo des kompletten Workflows von ReCaptcha

Schlussfolgerung

In diesem Beitrag haben wir gezeigt, wie wir den Google reCaptcha-Dienst verwenden können, um ein reCaptcha-Widget in ein öffentlich verfügbares Formular zu integrieren, um Bots-Spam zu vermeiden. Aus Sicherheitssicht ist dies ein wichtiger Schritt und Entwickler sollten dieses wichtige Feature für ihre Webanwendungen berücksichtigen.

Referenzen

  1. Recaptcha mit Spring Boot-Anwendung – Recaptcha mit Spring Boot-Anwendung
  2. Spring Boot-Anwendung mit Google Recaptcha schützen – Spring Boot-Anwendung schützen


Java-Tag