Beberapa waktu lalu saya menyadari kalau di salah satu situs saya banyak sekali pengguna-pengguna baru yang mendaftar. Dimana hal itu memang bagus, namun setelah saya perhatikan, kebanyakan hanyalah pengguna spam. Jadi saya cari tahu bagaimana dan darimana mereka didaftarkan. Kemudian bagaimana juga cara mencegahnya.
1. Identifikasi Masalah SPAM Pendaftaran Pengguna
Pertama, saya cari dulu bagaimana pengguna-pengguna tersebut bisa terdaftar. Karena di situs saya satunya, untuk masuk harus melalui chaptcha terlebih dahulu. Dan juga kemungkinan kecil jika bisa melewatinya.
Setelah saya perhatikan, ternyata ada dua kemungkinan yang saya temukan yaitu:
1.1 Menggunakan wp-login
Yap! yang pertama menggunakan wp-login, karena saya memakai captcha hanya untuk form login buatan sendiri, jadi captchanya hanya melindungi form tersebut. Namun, wp-login default wordpress tetap terbuka untuk umum. Dan bisa jadi kebanyakan berasal dari sana.
1.2 Dari WordPress Rest API
Kemudian, saya juga curiga terhadap wordpress rest-api. Karena setelah saya teliti dengan cermat, disana terdapat endpoint untuk mendaftarkan pengguna. Jadi mungkin saja bot-bot itu menggunakan endpoint tersebut untuk melakukan spam pendaftaran.
2. Mengatasi Masalah SPAM Pendaftaran Pengguna
Setelah mengidentifikasi celah keamanan di atas, berikut adalah langkah-langkah konkret yang saya ambil untuk menutup lubang tersebut:
2.1 Mengamankan atau Menonaktifkan wp-login.php
Karena celah utama ada pada form login bawaan yang tidak terproteksi captcha kustom, ada beberapa pendekatan yang bisa dilakukan:
- Menyembunyikan URL Login: Menggunakan hook atau plugin untuk mengubah URL wp-login.php menjadi sesuatu yang unik (misal: /masuk-rahasia-123). Ini akan mematahkan upaya automated bot yang secara default mencari file tersebut.
- Redirect ke Form Kustom: Memaksa semua akses yang menuju wp-login.php untuk diarahkan langsung ke halaman login buatan sendiri yang sudah memiliki proteksi captcha.
- Proteksi Level Server: Menambahkan Basic Authentication pada file wp-login.php melalui konfigurasi .htaccess atau Nginx agar bot tidak bisa menyentuh script PHP sebelum melewati validasi server.
2.2 Membatasi Akses WordPress REST API
Untuk mengatasi pendaftaran via endpoint API, saya menerapkan pembatasan akses ketat:
- Menonaktifkan Endpoint User secara Publik: Saya menambahkan kode di functions.php untuk memastikan bahwa akses ke endpoint /wp-json/wp/v2/users hanya bisa dilakukan oleh pengguna yang sudah terautentikasi (memiliki hak akses admin).
- Require Authentication: Mengonfigurasi WordPress agar semua permintaan REST API memerlukan header otorisasi. Jika tidak ada token yang valid, permintaan pendaftaran akan ditolak mentah-mentah oleh sistem.
2.3 Implementasi Validasi Tambahan
Selain menutup celah akses, saya juga menambahkan lapisan validasi pada proses pendaftaran:
- Honeypot Technique: Menambahkan input field tersembunyi (CSS display: none) pada form pendaftaran. Jika field ini terisi, sistem akan tahu bahwa pengisinya adalah bot, karena pengguna manusia tidak akan melihat field tersebut.
- Email Verification: Mengaktifkan fitur verifikasi email. Akun yang mendaftar tidak akan langsung aktif sampai mereka mengeklik tautan konfirmasi yang dikirimkan. Ini sangat efektif untuk mencegah pendaftaran massal oleh bot yang menggunakan email fiktif.
- Blokir Berdasarkan Negara atau IP: Jika mayoritas spam berasal dari negara yang bukan target pasar situs saya, saya menggunakan Firewall (seperti Cloudflare) untuk memblokir rentang IP dari negara tersebut atau IP yang sudah masuk dalam blacklist spammer global.
Dengan kombinasi penutupan akses wp-login.php secara langsung dan pengetatan REST API, jumlah pendaftaran palsu berhasil ditekan hingga hampir nol tanpa mengganggu pengalaman pengguna asli.



