Jak stworzyć Honeypota do walki ze spamem formularzy w Laravel?
Gdy Twoja witryna zostanie wkrótce uruchomiona, zaczniesz otrzymywać spam z formularzy witryny. Spamboty piszą program komputerowy, który po prostu wypełnia formularz fałszywymi informacjami. Wyczyszczenie tych niechcianych danych i ochrona bazy danych przed takimi niepotrzebnymi zapisami to ból głowy dla właścicieli witryn. Ten artykuł jest przeznaczony dla osób, które zbudowały swoją aplikację przy użyciu Laravela. Dowiemy się, jak można chronić ich formularze przed spamem w Laravel.
Użytkownik może dodać reCAPTCHA do swojego formularza, który sprawdzi, czy wartości formularza są wypełnione przez ludzi, czy nie. Ale robiąc to, Twoi użytkownicy muszą rozwiązać zagadkę przed przesłaniem formularza. Innym sposobem jest dodanie najnowszej wersji Google reCAPTCHA. Ale wyświetli ikonę reCAPTCHA w prawym dolnym rogu Twojej witryny.
Większość właścicieli witryn nie lubi captcha. A jeśli nienawidzisz captcha, trzymaj w swoich formularzach honeypot, który uwięziłby spamboty.
Można powiedzieć, że w większości spamboty są głupie, ponieważ po prostu wypełniają wszystkie pola formularza. Nie wiedzą, które pola formularza są aktualnie używane do dalszego przetwarzania. Możemy skorzystać z tego scenariusza i dodać do naszego formularza atrapę pola wejściowego (honeypot). To ukryte pole powinno pozostać puste w momencie przesyłania formularza. Więc podczas sprawdzania po stronie serwera, czy to ukryte pole jest puste, będzie to prawidłowe przesłanie formularza, a jeśli nie jest puste, będzie to spam. Powiedziawszy to, przyjrzyjmy się, jak stworzyć honeypot i chronić formularze stron internetowych przed spamem.
Twórz Honeypot i chroń formularz przed spamem
Jak powiedzieliśmy, używając ukrytego pola, możemy oszukać roboty spamujące i zatrzymać przesyłanie formularzy po stronie serwera. W tym celu wykorzystamy pakiet laravel-honeypot. Korzystając z tego pakietu, użytkownik może łatwo chronić jeden lub więcej formularzy. Nie muszą pisać kodu po stronie serwera dla każdego formularza osobno.
Aby zainstalować pakiet, otwórz terminal w katalogu głównym projektu i uruchom polecenie:
composer require spatie/laravel-honeypot
Po zainstalowaniu pakietu opublikuj plik konfiguracyjny pakietu za pomocą polecenia:
php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag=config
To polecenie doda honeypot.php
plik w config
katalogu. Nie musisz modyfikować pliku konfiguracyjnego. Zamiast tego w .env
pliku dodaj stałą pokazaną poniżej.
HONEYPOT_NAME=honeypot_for_bots
Tutaj podaliśmy nazwę „honeypot_for_bots", która będzie nazwą twojego ukrytego pola. Możesz ustawić dowolną inną nazwę dla tej stałej.
Następnie zarejestruj globalne oprogramowanie pośredniczące, które ochroni wszystkie Twoje formularze z jednego miejsca.
appHttpKernel.php
<?php
…
…
protected $middleware = [
// ...
SpatieHoneypotProtectAgainstSpam::class,
];
Wszystko gotowe! Teraz przejdź do swojego formularza i dodaj do niego honeypot dodając @honeypot
w formularzu HTML. Twój pilnik będzie wyglądał mniej więcej tak, jak poniżej.
<form action="" method="post">
@honeypot
<input type="text" name="fullname" placeholder="Full Name" />
<input type="submit" name="submit" value="Submit" />
{{ csrf_field() }}
</form>
Teraz, jeśli spamboty próbują wysłać spam w Twoim formularzu, pakiet odrzuci żądanie. Dzięki temu w Twojej bazie danych nie znajdzie się więcej spamu.
Powiązane artykuły
- Przewodnik po dodaniu Google reCAPTCHA v3 do Twojej witryny Laravel
- Jak używać zdarzeń i nasłuchiwaczy Laravel w swojej aplikacji?