Come creare Honeypot per combattere lo spam dei moduli in Laravel
Una volta che il tuo sito web sarà attivo molto presto, inizierai a ricevere spam dai moduli del tuo sito web. Gli spambot scrivono un programma per computer che compila semplicemente il modulo con informazioni false. È un grattacapo per i proprietari di siti ripulire questi dati indesiderati e proteggere il database da tali record non necessari. Questo articolo è stato scritto per le persone che hanno creato la loro applicazione utilizzando Laravel. Studieremo come proteggere i propri moduli dallo spam in Laravel.
L’utente può aggiungere reCAPTCHA sul proprio modulo che verificherà se i valori del modulo sono compilati da umani o meno. Ma così facendo, i tuoi utenti devono risolvere il puzzle prima di inviare un modulo. Un altro modo è aggiungere l’ultima versione di Google reCAPTCHA. Ma mostrerà un’icona reCAPTCHA nell’angolo in basso a destra del tuo sito web.
Alla maggior parte dei proprietari di siti non piacciono i captcha. E se odi i captcha, tieni un honeypot nei tuoi moduli che intrappolerebbe gli spambot.
Per lo più gli spambot sono stupidi, possiamo dire che riempiono tutti i campi del modulo. Non sono a conoscenza di quali campi del modulo sono effettivamente in uso per ulteriori processi. Possiamo sfruttare questo scenario e aggiungere un campo di input fittizio (honeypot) al nostro modulo. Questo campo nascosto dovrebbe rimanere vuoto al momento dell’invio del modulo. Quindi, mentre controlli sul lato server se questo campo nascosto è vuoto, allora sarà un invio di modulo valido e se non è vuoto, allora sarà spam. Detto questo, diamo un’occhiata a come creare honeypot e proteggere i moduli dei siti Web dallo spam.
Crea Honeypot e previeni il modulo dallo spam
Come abbiamo detto, utilizzando un campo nascosto possiamo ingannare gli spambot e interrompere l’invio del modulo sul lato server. Per questo scopo, useremo il pacchetto laravel-honeypot. Utilizzando questo pacchetto, un utente può proteggere facilmente uno o più moduli. Non hanno bisogno di scrivere il codice lato server per ogni modulo separatamente.
Per l’installazione del pacchetto, apri il terminale nella directory principale del progetto ed esegui il comando:
composer require spatie/laravel-honeypot
Dopo l’installazione del pacchetto, pubblica il file di configurazione del pacchetto utilizzando il comando:
php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag=config
Questo comando aggiungerà il honeypot.php
file nella config
directory. Non è necessario modificare il file di configurazione. Invece, nel .env
file aggiungi la costante mostrata di seguito.
HONEYPOT_NAME=honeypot_for_bots
Qui abbiamo dato il nome ‘honeypot_for_bots’ che sarà il nome del tuo campo nascosto. Puoi assegnare qualsiasi altro nome a questa costante.
Quindi, registra il middleware globale che proteggerà tutti i tuoi moduli da un unico posto.
appHttpKernel.php
<?php
…
…
protected $middleware = [
// ...
SpatieHoneypotProtectAgainstSpam::class,
];
Tutto fatto! Ora vai al tuo modulo e aggiungi l’honeypot aggiungendo @honeypot
nel modulo HTML. Il tuo file blade assomiglierà a qualcosa di simile sotto.
<form action="" method="post">
@honeypot
<input type="text" name="fullname" placeholder="Full Name" />
<input type="submit" name="submit" value="Submit" />
{{ csrf_field() }}
</form>
Ora, se gli spambot stanno cercando di inviare spam nel tuo modulo, il pacchetto scarterà la richiesta. Di conseguenza, nessun altro spam finirà nel tuo database.
articoli Correlati
- Una guida sull’aggiunta di Google reCAPTCHA v3 al tuo sito web Laravel
- Come utilizzare gli eventi e gli ascoltatori di Laravel nella tua applicazione