Bagi para blogger atau pemilik website yang mengaktifkan fasilitas komentar pada artikel-artikelnya pasti sering kesal dengan serbuan komentar spam yang biasanya dijalankan oleh mesin bot.
Spambot tersebut secara acak mengirimkan pesan-pesan sampah/iklan yang tidak perlu yang lama kelamaan akan membuat website kita akan penuh postingan komentar dan membuat website kita tidak enak dibaca serta bikin penuh database.
Namun bagi para pengguna web sistem cms seperti wordpress, joomla, drupal atau cms yang lain biasanya sudah ada sistem spam filteringnya dan tinggal mengaktifkan melalui seting di cms tersebut, seperti: reCaptcha, MathCaptcha, dan sebagainya.
Tapi kali ini saya akan membahas bagaimana membuat spambot trap (jebakan spambot) secara sederhana dengan teknik Honeypot, dikarenakan saya menggunakan cms buatan sendiri. Teknik honeypot adalah cara yang cepat dan efektif untuk mencegah spam bot. Spam bot menyukai bagian form dalam suatu website, seperti: kolom komentar, kolom kontak email, kolom registrasi user, dan lain-lain. Saat mereka menemukan bagian suatu form, spam bot akan mengisinya secara otomatis, meski bagian tersebut tersembunyi dari antarmuka user. Untuk memanfaatkan ini, Anda bisa membuat kolom form yang harus dibiarkan kosong, tapi sembunyikan dari user manusia. Saat form dikirimkan, Anda dapat memeriksanya untuk melihat apakah ada nilai untuk kolom tersebut; apabila kolom tersebut terdapat nilai karena spam bot otomatis akan mengisinya maka pengiriman form akan diblokir/direject, sebaliknya apabila kolom tersebut kosong karena tidak diisi oleh pengguna normal (manusia) maka pengiriman form akan diteruskan atau diproses.
Contoh implementasi yang saya lakukan adalah membuat honeypot checkbox pada kolom komentar dengan CSS dan PHP, seperti berikut:
<form action="checkbox-form.php" method="post">
<div class="hide"><label>Are you a human?</label><input id="status" name="status" type="checkbox" value="Yes" /></div>
</form>
style css:
.hide {
display: none;
}
<?php
if ($_POST['status'] == 'Yes')
{
echo 'Spam Detected!'; // proses submit form direject karena spam terdeteksi //
}
else
{
// proses submit form diteruskan //
}
?>
<div class="hide">Leave this field empty:</div>
<?php
$honeyPot = $_POST['phonenumber'];
if (trim($honeyPot) != '') {
echo 'Spam Detected!'; // This is a spam robot. Take action!
}
else
{
// It's a human. Continue with the rest of the validation.
}
?>
Demikian teknik sederhana spam bot filtering menggunakan teknik honeypot checkbox, walaupun mungkin tidak akan 100% mencegah spam dalam form website anda, tapi setidaknya bisa dicoba.