Skip to content

[Security] Apply rate limiting to login route #1411

Closed
Revanza1106 wants to merge 3 commits intoOpenSID:devfrom
Revanza1106:feature/rate-limiting-login
Closed

[Security] Apply rate limiting to login route #1411
Revanza1106 wants to merge 3 commits intoOpenSID:devfrom
Revanza1106:feature/rate-limiting-login

Conversation

@Revanza1106
Copy link
Contributor

Deskripsi

Memperbaiki kerentanan keamanan pada endpoint login akibat tidak adanya batasan percobaan login, sehingga memungkinkan attacker untuk melakukan brute force attack.

Perubahan

Provider

  • RouteServiceProvider: Tambah rate limiter login dengan limit 10x per menit

Routes

  • web.php: Override route login dengan throttle:login middleware
  • Disable default login route dari Auth::routes()

Risiko

  • Sebelum: Tanpa batasan percobaan login, vulnerable ke brute force
  • Sesudah: Dibatasi maksimal 10x percobaan per menit per IP + Email

Checklist

  • Code mengikuti style guide
  • Tidak mengubah fitur yang sudah ada
  • Hanya menambahkan rate limiting pada login

Closes #1410

@apidong
Copy link
Contributor

apidong commented Jan 26, 2026

mas @vickyrolanda
perlu di analisis juga, jika menggunakan cloudflare dengan mode proxy aktif (cloud orange), maupun reverse proxy. semua trafik yang masuk terbaca sebagai 1 ip. jika ada saat itu ada serangan bruto force ke login, pengguna asli terkena limit juga.

@vickyrolanda
Copy link
Contributor

mas @vickyrolanda perlu di analisis juga, jika menggunakan cloudflare dengan mode proxy aktif (cloud orange), maupun reverse proxy. semua trafik yang masuk terbaca sebagai 1 ip. jika ada saat itu ada serangan bruto force ke login, pengguna asli terkena limit juga.

ya mas, Ketika menggunakan Cloudflare Proxy atau Reverse Proxy (Nginx, Apache, Load Balancer), implementasi rate limiting berbasis $request->ip() akan sangat bermasalah.

karena masalahnya seperti ini :

  • Semua request terlihat dari IP yang sama (IP Cloudflare atau Proxy)
  • Attacker melakukan 10 request dengan email berbeda-beda
  • User legitimate tidak bisa login karena limit sudah tercapai dari IP yang sama
  • Rate limiting jadi tidak efektif untuk mencegah serangan

untuk menangkap IP asli dari cloudflare saya cari biasanya bisa gunakan Real IP dari Header HTTP Cloudflare dan reverse proxy biasanya mengirim IP asli client melalui header:

CF-Connecting-IP (Cloudflare)
X-Forwarded-For
X-Real-IP

@Revanza1106
Copy link
Contributor Author

mas @vickyrolanda perlu di analisis juga, jika menggunakan cloudflare dengan mode proxy aktif (cloud orange), maupun reverse proxy. semua trafik yang masuk terbaca sebagai 1 ip. jika ada saat itu ada serangan bruto force ke login, pengguna asli terkena limit juga.

ya mas, Ketika menggunakan Cloudflare Proxy atau Reverse Proxy (Nginx, Apache, Load Balancer), implementasi rate limiting berbasis $request->ip() akan sangat bermasalah.

karena masalahnya seperti ini :

* Semua request terlihat dari IP yang sama (IP Cloudflare atau Proxy)

* Attacker melakukan 10 request dengan email berbeda-beda

* User legitimate tidak bisa login karena limit sudah tercapai dari IP yang sama

* Rate limiting jadi tidak efektif untuk mencegah serangan

untuk menangkap IP asli dari cloudflare saya cari biasanya bisa gunakan Real IP dari Header HTTP Cloudflare dan reverse proxy biasanya mengirim IP asli client melalui header:

CF-Connecting-IP (Cloudflare) X-Forwarded-For X-Real-IP

Terimkasih mas @vickyrolanda untuk arahanya,Saya akan implementasikan rate limiting dengan membaca IP asli dari header tersebut (CF-Connecting-IP, X-Forwarded-For,X-Real-IP).

pendekatan yang saya akan saya implementasikan yaitu:

menambah method helper untuk get real IP & Mengunakan di rate limiter login

@Revanza1106 Revanza1106 closed this Feb 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants