Kamis, 21 November 2024

Mencegah Komentar Spam dengan Teknik Honeypot Checkbox


1720633979_komentar.jpg

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:

  • Buat form input untuk honeypot spam bot dan style CSS untuk menyembunyikan checkbox sehingga hanya spam bot yang dapat melihatnya, tetapi tidak terlihat oleh pengguna biasa atau manusia:
    <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;
    }
    
  • Buat validasi dengan php (checkbox-form.php) untuk cek apakah kolom status tadi ada input atau kosong.
    Kalau input terisi oleh spam bot maka form diblokir, tetapi apabila input kosong form akan diteruskan untuk diproses.
    <?php
    if ($_POST['status'] == 'Yes') 
    {
       echo 'Spam Detected!'; // proses submit form direject karena spam terdeteksi //
    }
    else
    {
       // proses submit form diteruskan //
    }
    ?>
  • Selain menggunakan input checkbox, bisa juga menggunakan input type text, seperti contoh:
    <div class="hide">Leave this field empty:</div>
    
  • Selanjutnya kita proses dengan backend validasi php dengan script backend-form.php:
    <?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.