rate-limit
Catatan teknis seputar web development, DevOps, dan integrasi AI.
2 artikel
- 04.25testing
Menguji Rate Limiter Go Tanpa Menunggu Waktu Nyata
Memutar waktu di test Go lewat field Now yang bisa ditukar: rate limiter teruji tanpa sleep, plus kapan pindah ke testing/synctest.
TL;DR: Nunggu waktu nyata di test tuh lambat plus flaky, jadi jangan. Triknya gampang: tuker jamnya pake field func() time.Time, terus test tinggal majuin jam manual, tanpa time.Sleep. Kalau kode yang dites tidur sendiri atau punya goroutine, pake testing/synctest yang udah stabil di Go 1.25.
#go#testing#rate-limit - 04.42backend
IP Klien yang Bisa Dipercaya di Balik Proxy
Header X-Forwarded-For bisa diisi sembarang oleh klien. Begini cara memilih alamat yang benar-benar bisa dipercaya di balik Cloudflare dan nginx.
TL;DR: Gara-gara serangan tebak password, endpoint login dikasih rate limiter, tapi awalnya salah baca IP dari entri pertama X-Forwarded-For yang gampang dipalsuin penyerang. Sekarang urutan resolusinya diubah: CF-Connecting-IP dulu, lanjut entri terakhir XFF, X-Real-IP, lalu RemoteAddr. Rate limitnya juga per akun (IP plus email), bales 429 dengan Retry-After, plus ada pembersihan memori biar nggak bocor.
#go#security#nginx