Cara Melindungi Form Komentar WordPress dengan Teknik Honeypot

Iklan Bersponsor

Cara Melindungi Form Komentar WordPress – Seperti yang kita ketahui bersama bahwa WordPress merupakan salah satu CMS (Content Management System) yang paling populer di dunia. Tidak mengherankan apabila kepopulerannya ini menjadi sebab banyaknya spam yang masuk ke website WordPress kita.

Salah satu bagian yang paling sering diserang oleh para spammer adalah formulir komentar. Bahkan tak jarang, apabila terlalu banyak spam yang masuk tentu ukuran database juga akan membengkak sehingga berdampak pada performa. Oleh sebab itu, kita perlu melindungi formulir komentar WordPress dari serangan spammer. Penasaran? Langsung saja simak berikut ini.

Apa Itu Honeypot pada WordPress?

Secara sederhana, honeypot pada WordPress dapat diartikan sebagai suatu teknik keamanan yang digunakan untuk melindungi situs WordPress dari spam dan serangan bot. Tujuannya tentu berbagai aktivitas yang mencurigakan yang ke dalam situs WordPress seperti pengiriman formulir otomatis pada form komentar.

Biasanya, honeypot ini dibuat agar tidak terlihat oleh pengguna manusia, tetapi dapat mendeteksi dan memblokir bot yang mencoba menyalahgunakan situs web. Apakah menggunakan teknik honeypot ini dapat mempengaruhi performa WordPress? Selagi tanpa plugin, saya rasa tidak terlalu berpengaruh terhadap performa.

Cara Melindungi Form Komentar WordPress dengan Teknik Honeypot

Bagi Anda yang ingin melindungi formulir komentar dari serangan spammer menggunakan teknik honeypot pada WordPress. Sebelum melanjutkan, kita buat terlebih dahulu beberapa filter skenario penjebakan berikut ini.

  • Honeypot Field, mengidentifikasi bot yang mengisi semua field form komentar, termasuk yang tidak terlihat.
  • Timestamp Validation, mencegah spam dengan memeriksa bahwa form komentar tidak dikirim terlalu cepat.
  • Comment Length Validation, menghindari komentar yang terlalu singkat atau panjang yang biasanya merupakan indikasi spam.
  • Prohibited Words Detection, mencegah penggunaan bahasa yang tidak pantas atau kasar.
  • URL Detection, menghindari penyisipan tautan atau ULR yang tidak diinginkan yang sering kali digunakan dalam spam.

Nah, apabila skenario telah kita buat maka langkah selanjutnya adalah langsung membuat kode filternya. Pastikan kode yang telah saya buat ini Anda pasang harus diletakkan di file functions.php dari tema WordPress yang aktif. File ini biasanya terletak di direktori tema Anda di /wp-content/themes/nama-tema-anda/functions.php.

1. Honeypot Field

Skenario pertama yang akan kita program yaitu menambahkan bidang tersembunyi pada form komentar Anda yang hanya diisi oleh bot. Manusia biasanya tidak akan melihat atau mengisi bidang ini karena tersembunyi melalui CSS. Berikut adalah potongan kode honeypot field yang bisa Anda gunakan.

add_filter('comment_form_default_fields', function($fields) {
  $fields['honeypot'] = '<p class="comment-form-honeypot" style="display:none;"><label for="honeypot">Leave this field empty</label><input id="honeypot" name="honeypot" type="text" /></p>';
  $fields['timestamp'] = '<input type="hidden" name="timestamp" value="'.time().'" />';
  return $fields;
});

2. Timestamp Validation

Skenario selanjutnya yang akan kita program yaitu menambahkan field tersembunyi untuk menyimpan waktu ketika form komentar dimuat. Jika waktu antara form dimuat dan dikirimkan terlalu singkat, kemungkinan besar itu adalah bot. Berikut adalah potongan kode timestamp validation yang bisa Anda gunakan.

add_filter('preprocess_comment', function($commentdata) {
  $min_time = 30; // 30 = 30 detik.
  if(isset($_POST['timestamp']) && (time() - intval($_POST['timestamp'])) < $min_time) {
    wp_die('Form submitted too quickly. Possible spam.');
  }
  return $commentdata;
});

3. Comment Length Validation

Skenario yang berikutnya yang akan kita program yaitu menambahkan filter untuk memeriksa jumlah kata atau batas karakter minimum dalam komentar. Berikut adalah potongan kode comment length validation yang bisa Anda gunakan.

add_filter('preprocess_comment', function($commentdata) {
  if(str_word_count(trim($commentdata['comment_content'])) < 25) {
    wp_die('Your comment is too short. Please write at least 25 words.');
  }
  return $commentdata;
});

4. Prohibited Words Detection

Skenario keempat yang akan kita program selanjutnya yaitu menambahkan filter kata-kata kasar atau tidak pantas dengan berbagai variasi yang mungkin ditulis oleh pengguna. Berikut adalah potongan kode prohibited words detection yang bisa Anda gunakan.

function sanitize_comment($comment) {
  $replacements = [
    '4' => 'a', '1' => 'i', '3' => 'e', '0' => 'o', '5' => 's', '9' => 'g'
  ];
  return strtr(strtolower($comment), $replacements);
}
function contains_prohibited_words($comment) {
  $prohibited_words = [
    'anjing', 'babi', 'monyet', // Tambahkan kata terlarang yang dipisah dengan tanda koma di sini.
  ];
  $sanitized_comment = sanitize_comment($comment);
  foreach($prohibited_words as $word) {
    if(strpos($sanitized_comment, $word) !== false) {
      return true;
    }
  }
  return false;
}
add_filter('preprocess_comment', function($commentdata) {
  if(contains_prohibited_words($commentdata['comment_content'])) {
    wp_die('Your comment contains inappropriate language.');
  }
  return $commentdata;
});

5. URL Detection

Skenario terakhir yang akan kita program yaitu URL detection yang berfungsi untuk memastikan bahwa URL tidak dapat dimasukkan ke dalam komentar, kita bisa menambahkan validasi tambahan yang memeriksa keberadaan URL dalam teks komentar. Berikut adalah potongan kode URL detection yang bisa Anda gunakan.

add_filter('preprocess_comment', function($commentdata) {
  if(preg_match('/\b(?:https?:\/\/|www\.)\S+\b/i', $commentdata['comment_content'])) {
    wp_die('URLs are not allowed in comments.');
  }
  return $commentdata;
});

Penutup

Dengan menerapkan teknik honeypot untuk melindungi formulir komentar pada situs WordPress, paling tidak Anda dapat meminimalkan komentar spam dan melindungi situs WordPress Anda dari konten yang tidak diinginkan secara lebih efektif. Meski, tanpa menggunakan plugin sekalipun sehingga performa WordPress juga akan lebih terjaga.

Demikian artikel tutorial pada kesempatan kali ini mengenai cara melindungi form komentar WordPress dengan teknik honeypot. Selamat mencoba dan semoga bermanfaat, apabila bingung maka silahkan tanyakan di kolom komentar di bawah.

Bagikan Ke

Leave a Reply

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *