Back to blog
Security

Cara Mencegah Serangan Brute Force pada Form Login Website

Hacker tidak selalu menggunakan skrip rumit. Terkadang, mereka sekadar 'menebak' passwordmu ribuan kali sedetik menggunakan bot. Jangan biarkan form-mu terbuka bebas.

super admin·17 Juni 2026·2 min read
Cara Mencegah Serangan Brute Force pada Form Login Website
Article Content

Serangan 'Coba Terus Sampai Tembus'

Di artikel keamanan sebelumnya, kita sudah membahas SQL Injection dan CSRF. Namun, ada satu jenis serangan yang sangat primitif, kuno, namun hingga hari ini masih sangat efektif: Brute Force Attack.

Hacker tidak perlu mencari kelemahan di kodemu. Mereka cukup mengarahkan program robot (Bot) ke halaman Login websitemu, memasukkan *username* 'admin', lalu mencoba menebak *password* (seperti admin123, 123456, password, qwerty) sebanyak ribuan kali per detik. Karena komputer bekerja sangat cepat, jika *password* adminmu lemah, bot itu akan berhasil masuk dalam waktu kurang dari 5 menit.

Berikut adalah 3 lapis pertahanan yang WAJIB diterapkan Backend Developer pada form Login.

Lapis 1: Pembatasan Percobaan (Rate Limiting)

Manusia normal paling banyak akan salah memasukkan password 3 hingga 5 kali. Jika ada yang mencoba login 50 kali dalam satu menit, sudah pasti itu robot.

Terapkan fitur Rate Limiting di API Login-mu. Di *Node.js/Express*, kamu bisa menggunakan *library* express-rate-limit. Atur peraturannya: "Satu alamat IP maksimal hanya boleh menembak API Login ini 5 kali dalam waktu 15 menit. Jika melebihi itu, blokir IP-nya (Beri respon 429 Too Many Requests)."

Lapis 2: Penguncian Akun Sementara (Account Lockout)

Bagaimana jika Hacker menggunakan ribuan botnet dengan IP Address yang berbeda-beda? (Ini disebut *Distributed Brute Force*). Jika ini terjadi, pembatasan IP tidak akan mempan.

Kamu harus melakukan pembatasan berbasis Akun. Tambahkan kolom failed_login_attempts di tabel *Users*. Jika username yang dicoba si Hacker sudah gagal login sebanyak 5 kali berturut-turut, bekukan akun tersebut selama 30 menit ke depan, meskipun *password* percobaan ke-6 nya benar.

Lapis 3: Wajibkan Tanda Tangan Manusia (CAPTCHA)

Jika bot sudah sangat masif, libatkan pihak ketiga yang ahlinya melawan bot, yaitu Google. Pasang widget Google reCAPTCHA di halaman *Frontend*-mu.

Setiap kali form Login dikirim, *Frontend* harus menyertakan token dari Google. Di *Backend*, kamu wajib mengecek keaslian token itu ke server Google. Jika Google berkata "Skornya mencurigakan, ini kemungkinan bot", tolak mentah-mentah proses loginnya! (Saat ini reCAPTCHA v3 berjalan mulus di latar belakang tanpa harus menyuruh user menyusun gambar Traffic Light atau Sepeda Motor yang menyebalkan).

Kesimpulan

Serangan Brute Force bukan hanya mengancam keamanan data (kebobolan), tapi ratusan ribu tebakan (request) per detik itu akan membuat servermu kepanasan dan mengalami *Downtime*. Jadi, mengamankan form Login adalah pertahanan harga mati bagi sebuah website publik.

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates