Skip to content

[SECURITY] Implementasi & Perkuat Rate Limiting pada Semua Endpoint Kritis #957

@vickyrolanda

Description

@vickyrolanda

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

  1. Aktifkan dan enforce global rate limiting (RATE_LIMITER_ENABLED=true).
  2. Implementasikan rate limiting yang menggabungkan IP, user-agent/browser fingerprint, dan (jika user login) user id.
  3. Tambahkan account lockout sementara jika gagal berulang.
  4. Tambahkan progressive delay.
  5. 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions