Comment créer un pot de miel pour lutter contre le spam de formulaire dans Laravel
Une fois que votre site Web sera mis en ligne très bientôt, vous commencerez à recevoir du spam provenant des formulaires de votre site Web. Les spambots écrivent un programme informatique qui ne fait que remplir votre formulaire avec de fausses informations. C’est un casse-tête pour les propriétaires de sites de nettoyer ces données indésirables et de protéger votre base de données de ces enregistrements inutiles. Cet article est écrit pour les personnes qui ont construit leur application à l’aide de Laravel. Nous étudierons comment protéger leurs formulaires du spam dans Laravel.
L’utilisateur peut ajouter reCAPTCHA sur son formulaire qui testera si les valeurs du formulaire sont remplies par des humains ou non. Mais ce faisant, vos utilisateurs doivent résoudre le casse-tête avant de soumettre un formulaire. Une autre solution consiste à ajouter la dernière version de Google reCAPTCHA. Mais il affichera une icône reCAPTCHA dans le coin inférieur droit de votre site Web.
La plupart des propriétaires de sites n’aiment pas les captchas. Et si vous détestez les captchas alors gardez un pot de miel dans vos formulaires qui piégerait les spambots.
On peut dire que la plupart des spambots sont stupides car ils ne font que remplir tous les champs de votre formulaire. Ils ne savent pas quels champs de formulaire sont réellement utilisés pour la suite du processus. Nous pouvons profiter de ce scénario et ajouter un champ de saisie factice (pot de miel) à notre formulaire. Ce champ masqué doit rester vide au moment de la soumission du formulaire. Ainsi, en vérifiant côté serveur si ce champ caché est vide, ce sera une soumission de formulaire valide et s’il n’est pas vide, ce sera du spam. Cela dit, examinons comment créer un pot de miel et protéger les formulaires de sites Web contre le spam.
Créer un pot de miel et empêcher le formulaire de spam
Comme nous l’avons dit, en utilisant un champ caché, nous pouvons tromper les spambots et arrêter la soumission du formulaire côté serveur. Pour cela, nous allons utiliser le package laravel-honeypot. En utilisant ce package, un utilisateur peut facilement protéger un ou plusieurs formulaires. Ils n’ont pas besoin d’écrire du code côté serveur pour chaque formulaire séparément.
Pour l’installation du package, ouvrez le terminal dans le répertoire racine de votre projet et exécutez la commande :
composer require spatie/laravel-honeypot
Lors de l’installation du package, publiez le fichier de configuration du package à l’aide de la commande :
php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag=config
Cette commande ajoutera un honeypot.php
fichier sous le config
répertoire. Vous n’avez pas besoin de modifier le fichier de configuration. Au lieu de cela, dans le .env
fichier, ajoutez la constante indiquée ci-dessous.
HONEYPOT_NAME=honeypot_for_bots
Ici, nous avons donné le nom ‘honeypot_for_bots’ qui sera le nom de votre champ caché. Vous pouvez définir n’importe quel autre nom pour cette constante.
Ensuite, enregistrez le middleware global qui protégera tous vos formulaires à partir d’un seul endroit.
appHttpKernel.php
<?php
…
…
protected $middleware = [
// ...
SpatieHoneypotProtectAgainstSpam::class,
];
Terminé! Allez maintenant dans votre formulaire et ajoutez-y le pot de miel en ajoutant @honeypot
le formulaire HTML. Votre fichier de lame ressemblera à quelque chose comme ci-dessous.
<form action="" method="post">
@honeypot
<input type="text" name="fullname" placeholder="Full Name" />
<input type="submit" name="submit" value="Submit" />
{{ csrf_field() }}
</form>
Désormais, si des robots spammeurs tentent d’envoyer du spam dans votre formulaire, le package rejettera la demande. En conséquence, plus aucun spam ne se retrouvera dans votre base de données.
Articles Liés
- Un guide sur l’ajout de Google reCAPTCHA v3 à votre site Web Laravel
- Comment utiliser les événements et les écouteurs Laravel dans votre application