Masalah
Parameter RATE_LIMITER_ENABLED default-nya false, dan implementasi rate limiting pada login/OTP hanya mengandalkan IP pengguna. Ini dapat dengan mudah di-bypass via VPN, rotasi IP, atau distributed attack. Tidak ada progressive lockout/account temporary lock setelah gagal berulang.
Dampak
- Akun admin dapat di-brute force.
- Layanan mudah di-flood, API abused via automation.
- Dapat membantu bypass 2FA/OTP brute force.
Langkah Penyelesaian
- Aktifkan dan enforce global rate limiting (
RATE_LIMITER_ENABLED=true).
- Implementasikan rate limiting yang menggabungkan IP, user-agent/browser fingerprint, dan (jika user login) user id.
- Tambahkan account lockout sementara jika gagal berulang.
- Tambahkan progressive delay.
- Terapkan reCAPTCHA di login setelah sejumlah percobaan gagal.
Contoh Konfigurasi
RATE_LIMITER_ENABLED=true
RATE_LIMITER_MAX_ATTEMPTS=30
RATE_LIMITER_DECAY_MINUTES=5
Contoh Perbaikan Middleware
$key = sha1('global-rate-limit:' . $request->ip() . '|' . $request->userAgent());
Setelah Perbaikan
- Tes brute force pada login/API: pastikan terkunci setelah pelanggaran threshold.
- Review log blocking pada audit log aplikasi.
Masalah
Parameter
RATE_LIMITER_ENABLEDdefault-nyafalse, dan implementasi rate limiting pada login/OTP hanya mengandalkan IP pengguna. Ini dapat dengan mudah di-bypass via VPN, rotasi IP, atau distributed attack. Tidak ada progressive lockout/account temporary lock setelah gagal berulang.Dampak
Langkah Penyelesaian
RATE_LIMITER_ENABLED=true).Contoh Konfigurasi
Contoh Perbaikan Middleware
Setelah Perbaikan