So erstellen Sie einen Honeypot für den Kampf gegen Formular-Spam in Laravel
Sobald Ihre Website live geht, erhalten Sie Spam von Ihren Website-Formularen. Spambots schreiben ein Computerprogramm, das Ihr Formular einfach mit gefälschten Informationen ausfüllt. Es bereitet Site-Besitzern Kopfschmerzen, diese unerwünschten Daten zu bereinigen und Ihre Datenbank vor solchen unnötigen Datensätzen zu schützen. Dieser Artikel wurde für die Leute geschrieben, die ihre Anwendung mit Laravel erstellt haben. Wir werden untersuchen, wie man seine Formulare in Laravel vor Spam schützen kann.
Der Benutzer kann seinem Formular reCAPTCHA hinzufügen, um zu testen, ob die Formularwerte von Menschen ausgefüllt werden oder nicht. Dazu müssen Ihre Benutzer jedoch das Rätsel lösen, bevor sie ein Formular absenden. Eine andere Möglichkeit besteht darin, die neueste Version von Google reCAPTCHA hinzuzufügen. Es wird jedoch ein reCAPTCHA-Symbol in der unteren rechten Ecke Ihrer Website angezeigt.
Die meisten Seitenbesitzer mögen die Captchas nicht. Und wenn Sie Captchas hassen, behalten Sie einen Honeypot in Ihren Formularen, der die Spambots einfängt.
Meistens sind Spambots dumm, das können wir sagen, da sie einfach alle Ihre Formularfelder ausfüllen. Sie wissen nicht, welche Formularfelder tatsächlich für die weitere Verarbeitung verwendet werden. Wir können dieses Szenario nutzen und unserem Formular ein Dummy-Eingabefeld (Honeypot) hinzufügen. Dieses versteckte Feld sollte zum Zeitpunkt der Formularübermittlung leer bleiben. Wenn also serverseitig geprüft wird, ob dieses versteckte Feld leer ist, handelt es sich um eine gültige Formularübermittlung und wenn es nicht leer ist, handelt es sich um Spam. Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie einen Honeypot erstellen und Website-Formulare vor Spam schützen.
Honeypot erstellen und Formular vor Spam schützen
Wie gesagt, mit einem versteckten Feld können wir die Spambots täuschen und die Formularübermittlung auf der Serverseite stoppen. Zu diesem Zweck werden wir das Paket laravel-honeypot verwenden. Mit diesem Paket kann ein Benutzer ein oder mehrere Formulare einfach schützen. Sie müssen nicht für jedes Formular separat serverseitigen Code schreiben.
Öffnen Sie für die Paketinstallation das Terminal in Ihrem Projektstammverzeichnis und führen Sie den Befehl aus:
composer require spatie/laravel-honeypot
Veröffentlichen Sie nach der Paketinstallation die Konfigurationsdatei des Pakets mit dem Befehl:
php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag=config
Dieser Befehl fügt eine honeypot.php
Datei unter dem config
Verzeichnis hinzu. Sie müssen die Konfigurationsdatei nicht ändern. Fügen Sie stattdessen in der .env
Datei die unten gezeigte Konstante hinzu.
HONEYPOT_NAME=honeypot_for_bots
Hier haben wir den Namen ‘honeypot_for_bots’ gegeben, der der Name Ihres versteckten Feldes ist. Sie können dieser Konstante einen beliebigen anderen Namen geben.
Registrieren Sie als Nächstes die globale Middleware, die alle Ihre Formulare von einem einzigen Ort aus schützt.
appHttpKernel.php
<?php
…
…
protected $middleware = [
// ...
SpatieHoneypotProtectAgainstSpam::class,
];
Alles erledigt! Gehen Sie nun zu Ihrem Formular und fügen Sie den Honeypot hinzu, indem Sie @honeypot
das Formular HTML hinzufügen. Ihre Blade-Datei sieht in etwa wie folgt aus.
<form action="" method="post">
@honeypot
<input type="text" name="fullname" placeholder="Full Name" />
<input type="submit" name="submit" value="Submit" />
{{ csrf_field() }}
</form>
Wenn nun Spambots versuchen, Spam in Ihrem Formular zu versenden, wird das Paket die Anfrage verwerfen. Dadurch landet kein Spam mehr in Ihrer Datenbank.
Zum Thema passende Artikel
- Eine Anleitung zum Hinzufügen von Google reCAPTCHA v3 zu Ihrer Laravel-Website
- So verwenden Sie Laravel-Ereignisse und -Listener in Ihrer Anwendung