Kuinka luoda Honeypot taistelulomakkeen roskapostia vastaan Laravelissa
Kun verkkosivustosi käynnistyy pian, alat saada roskapostia verkkosivustosi lomakkeista. Spambot kirjoittavat tietokoneohjelman, joka täyttää lomakkeen väärennetyillä tiedoilla. Sivustojen omistajille on päänsärky puhdistaa nämä ei-toivotut tiedot ja suojata tietokantasi tarpeettomilta tietueilta. Tämä artikkeli on kirjoitettu ihmisille, jotka rakensivat sovelluksensa Laravelin avulla. Tutkimme, kuinka heidän muotojaan voidaan suojata roskapostilta Laravelissa.
Käyttäjä voi lisätä reCAPTCHA: n lomakkeeseensa, joka testaa, täyttävätkö lomakkeen arvot ihmiset vai eivät. Mutta tekemällä niin käyttäjien on ratkaistava pulma ennen lomakkeen lähettämistä. Toinen tapa on lisätä Google reCAPTCHA: n uusin versio. Mutta se näyttää reCAPTCHA-kuvakkeen verkkosivustosi oikeassa alakulmassa.
Suurin osa sivuston omistajista ei pidä captchoista. Ja jos vihaat captchoja, pidä lomakkeissasi hunajapotti, joka ansaisi roskapostit.
Enimmäkseen spambot ovat tyhmiä, voimme sanoa, koska ne vain täyttävät kaikki lomakekentät. He eivät ole tietoisia siitä, mitä lomakekenttiä todella käytetään jatkoprosessissa. Voimme hyödyntää tätä skenaariota ja lisätä lomakkeeseemme tyhjän syötekentän (hunajapotin). Tämän piilotetun kentän tulee olla tyhjä lomaketta lähetettäessä. Joten kun palvelinpuolella tarkistetaan, onko tämä piilotettu kenttä tyhjä, se on kelvollinen lomakkeen lähetys ja jos se ei ole tyhjä, se on roskapostia. Tämän jälkeen katsotaanpa, miten luoda hunajapottia ja suojata verkkosivustolomakkeita roskapostilta.
Luo Honeypot ja estä lomake roskapostista
Kuten sanoimme piilotetun kentän avulla, voimme huijata spambot ja lopettaa lomakkeen lähettämisen palvelinpuolella. Tähän tarkoitukseen aiomme käyttää laravel-honeypot-pakettia. Tämän paketin avulla käyttäjä voi suojata yhtä tai useampaa lomaketta helposti. Heidän ei tarvitse kirjoittaa palvelinpuolen koodia jokaiselle lomakkeelle erikseen.
Pakettiasennusta varten avaa pääte projektin juurihakemistossa ja suorita komento:
composer require spatie/laravel-honeypot
Kun paketti asennetaan, julkaise paketin määritystiedosto komennolla:
php artisan vendor:publish --provider="SpatieHoneypotHoneypotServiceProvider" --tag=config
Tämä komento lisää honeypot.php
tiedoston config
hakemistoon. Sinun ei tarvitse muokata määritystiedostoa. Sen sijaan .env
lisää tiedostoon alla esitetty vakio.
HONEYPOT_NAME=honeypot_for_bots
Tässä annoimme nimen "honeypot_for_bots", joka on piilotetun kentän nimi. Voit asettaa tälle vakiolle minkä tahansa muun nimen.
Rekisteröi seuraavaksi maailmanlaajuinen väliohjelmisto, joka suojaa kaikki lomakkeet yhdestä paikasta.
appHttpKernel.php
<?php
…
…
protected $middleware = [
// ...
SpatieHoneypotProtectAgainstSpam::class,
];
Valmista! Siirry nyt lomakkeeseesi ja lisää hunajapotti lisäämällä @honeypot
siihen lomake HTML. Terätiedostosi näyttää jotain alla olevalta.
<form action="" method="post">
@honeypot
<input type="text" name="fullname" placeholder="Full Name" />
<input type="submit" name="submit" value="Submit" />
{{ csrf_field() }}
</form>
Jos roskapostirobotit yrittävät lähettää roskapostia lomakkeellasi, paketti hylkää pyynnön. Seurauksena ei enää roskapostia päädy tietokantaan.