Penguncian Akun dan Perlindungan dari Serangan Brute-Force
Pelajari cara melindungi titik akhir login dari upaya menebak kata sandi dengan melacak percobaan yang gagal dan mengunci akun sementara di Spring Security.
Penguncian Akun dan Perlindungan dari Serangan Brute-Force adalah pelajaran Spring Security 6 & JWT Authentication gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Spring Security 6 & JWT Authentication, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Spring Security 6 & JWT Authentication mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
The Brute-Force Threat
Attackers automate thousands of login attempts to guess passwords. Without limits, even rate limiting may not stop a slow, distributed guessing campaign against a single account.
Lockout as Defense
Account lockout blocks login for an account after too many failed attempts within a window. This makes online guessing impractical.
Listening for Failures
Spring Security publishes events on authentication outcomes. Listen for AuthenticationFailureBadCredentialsEvent to count failures.
@EventListener
public void onFailure(AuthenticationFailureBadCredentialsEvent e) {
String user = (String) e.getAuthentication().getPrincipal();
attempts.recordFailure(user);
}Tracking Attempt Counts
Keep a counter per username (or per username+IP). A simple cache with a time-to-live resets the count automatically after the window passes.
void recordFailure(String user) {
int count = cache.getOrDefault(user, 0) + 1;
cache.put(user, count, Duration.ofMinutes(15));
}Resetting on Success
A successful login should clear the counter, so legitimate users who mistyped a few times are not punished later.
@EventListener
public void onSuccess(AuthenticationSuccessEvent e) {
attempts.reset(e.getAuthentication().getName());
}Enforcing the Lock
Implement a UserDetailsService (or check during login) that throws LockedException when the threshold is exceeded.
if (attempts.isBlocked(username)) {
throw new LockedException('Account temporarily locked');
}Marking the Account Non-Locked
The UserDetails contract has isAccountNonLocked(). Return false to make Spring reject the login automatically.
@Override
public boolean isAccountNonLocked() {
return !attempts.isBlocked(username);
}Temporary vs Permanent Locks
Prefer temporary locks that auto-expire (for example 15 minutes). Permanent locks frustrate users and create a denial-of-service vector where attackers lock victims out on purpose.
Avoid User Enumeration
Return the same generic error for wrong password and locked account when possible, so attackers cannot tell which usernames exist or are locked.
Adding Exponential Backoff
Instead of a hard lock, increase the delay after each failure. The first retry waits a second, the next two, then four, slowing attackers without fully blocking users.
long delayMs = (long) Math.pow(2, count) * 1000;Persisting State
In a multi-instance deployment, store attempt counts in a shared store like Redis so a lock applies across all nodes, not just the one that saw the failures.
Quick Check
Test your understanding of brute-force protection.
Recap
You learned to protect logins from brute force:
- Count failures via Spring authentication events
- Lock the account through
isAccountNonLocked()or a thrownLockedException - Reset counters on success and prefer temporary locks
- Use backoff, avoid enumeration, and share state across instances
These measures make password guessing impractical without hurting real users.
Belajar Java dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penguncian Akun dan Perlindungan dari Serangan Brute-Force” gratis?
Ya — teks lengkap “Penguncian Akun dan Perlindungan dari Serangan Brute-Force” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Spring Security 6 & JWT Authentication, upgrade ke CoddyKit PRO. Kursus Spring Security 6 & JWT Authentication mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penguncian Akun dan Perlindungan dari Serangan Brute-Force”?
Pelajari cara melindungi titik akhir login dari upaya menebak kata sandi dengan melacak percobaan yang gagal dan mengunci akun sementara di Spring Security. Kamu berlatih Spring Security 6 & JWT Authentication dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Spring Security 6 & JWT Authentication?
Tidak diperlukan pengalaman sebelumnya. Spring Security 6 & JWT Authentication di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Penguncian Akun dan Perlindungan dari Serangan Brute-Force” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Spring Security 6 & JWT Authentication ini?
Ya. Setiap pelajaran Spring Security 6 & JWT Authentication menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengimplementasikan Autentikasi Multifaktor
- Pembatasan Laju Akses API
- Penanganan Peristiwa Autentikasi Kustom
- Penguncian Akun dan Perlindungan dari Serangan Brute-Force