Definisi
Rate limiting adalah kontrol manajemen traffic yang memberlakukan batas atas pada seberapa sering klien dapat melakukan tindakan tertentu dalam jendela waktu yang ditentukan. Ketika klien melebihi ambang batas, server merespons dengan error — biasanya HTTP 429 Too Many Requests — atau diam-diam membuang permintaan berlebih. Jendela waktu mengatur ulang baik pada jadwal tetap (penghitung “fixed window”) atau secara bergulir (penghitung “sliding window”), dengan sliding window memberikan penegakan yang lebih halus yang mencegah eksploitasi burst di batas jendela.
Rate limiting adalah salah satu kontrol keamanan web tertua dan paling universal diterapkan. OWASP (Open Web Application Security Project) merekomendasikannya sebagai pertahanan utama terhadap serangan brute-force, credential stuffing, dan penyalahgunaan formulir otomatis. Cloudflare menawarkan rate limiting sebagai fitur produk WAF mereka, dengan aturan yang dapat dikonfigurasi berdasarkan path URL, metode HTTP, alamat IP, nilai cookie, dan header permintaan. AWS WAF, Azure Front Door, dan Google Cloud Armor menyediakan kapabilitas yang setara.
Cara Kerja Rate Limiting
Rate limiter mempertahankan penghitung untuk setiap pengidentifikasi klien yang unik — paling umum alamat IP sumber, tetapi terkadang pengidentifikasi akun, kunci API, atau cookie sesi. Saat permintaan tiba, server memeriksa nilai penghitung saat ini untuk pengidentifikasi tersebut. Jika penghitung di bawah ambang batas, permintaan diizinkan dan penghitung ditambahkan. Jika penghitung berada di atau di atas ambang batas, permintaan ditolak dengan respons 429 atau ditangani sesuai kebijakan yang dikonfigurasi.
Penyimpanan penghitung biasanya diimplementasikan di Redis atau Memcached untuk memungkinkan pencarian cepat dan terdistribusi di beberapa instans server — persyaratan untuk aplikasi yang diskalakan secara horizontal. Dokumentasi Cloudflare menjelaskan penegakan rate limiting di tingkat jaringan edge, di mana aturan diterapkan sebelum permintaan mencapai server origin, mendistribusikan pengurangan beban di seluruh infrastruktur global Cloudflare.
Parameter rate limiting yang umum dalam konteks kontes mencakup:
- Vote per IP per jendela waktu: Konfigurasi paling umum. Contoh: tidak lebih dari 1 vote per alamat IP per jendela 24 jam.
- Vote per akun per kontes: Diberlakukan pada lapisan aplikasi menggunakan pengidentifikasi akun pengguna terotentikasi sebagai kuncinya.
- Registrasi per IP per jam: Diterapkan pada endpoint pembuatan akun untuk memperlambat pertanian akun yang digerakkan bot.
- Panggilan API per token per menit: Relevan untuk platform kontes yang mengekspos API voting publik.
Rate limiting juga dapat diterapkan secara probabilistik — misalnya, menerapkan batas yang lebih ketat ke permintaan yang tiba dengan sinyal perilaku atau fingerprint yang menyarankan otomatisasi, sementara menerapkan batas yang lebih longgar ke sesi dengan indikator manusia keyakinan tinggi.
Di Mana Anda Menemuinya
Rate limiting adalah kontrol di mana-mana yang ada di hampir setiap platform web. Operator kontes paling langsung menemukannya di tiga titik: endpoint submisi vote, formulir registrasi akun, dan (jika konfirmasi email diperlukan) pipeline pengiriman email. Integrasi kontes berbasis API menghadapi rate limit pada endpoint API platform.
Bagi pengguna akhir, rate limiting paling jelas terwujud sebagai error HTTP 429 atau pesan khusus platform seperti “Anda sudah memilih” atau “Harap tunggu sebelum memilih lagi.” Banyak platform mengimplementasikan soft rate limiting — menerima permintaan tetapi diam-diam membuang duplikat — untuk menghindari menandakan keberadaan kontrol kepada pelaku penyalahgunaan potensial.
Dokumentasi rate limiting WAF Cloudflare mencatat bahwa aturan rate limiting dapat diatur untuk mencatat tanpa memblokir selama fase analisis, kemudian dialihkan ke pemblokiran setelah ambang batas yang sesuai dikalibrasi. Pendekatan dua fase ini membantu operator kontes menghindari pemblokiran lonjakan voting yang sah secara tidak sengaja.
Contoh Praktis
Kompetisi penghargaan blogger makanan mengonfigurasi sistem voting-nya dengan rate limit per-IP 24 jam. Selama minggu terakhir kontes, seorang pemilih mencoba mengirim 50 vote secara berurutan dari alamat IP residensial yang sama. Vote pertama diterima; 49 permintaan berikutnya menerima respons 429. Browser pemilih menampilkan pesan yang menjelaskan keterbatasan sekali per hari.
Sebuah platform kontes SaaS yang meng-host ratusan kontes simultan menggunakan rate limiting Cloudflare di edge jaringan. Bot yang menargetkan satu kontes dengan 10.000 permintaan per menit dibatasi maksimal 60 permintaan per menit di edge, dengan permintaan berlebih tidak pernah mencapai server origin. Log server origin hanya menunjukkan traffic yang dibatasi, dan penggunaan CPU sisi server tetap tidak terpengaruh.
Tinjauan keamanan OWASP atas microsite kontes kustom startup mengidentifikasi tidak adanya rate limiting pada endpoint kirim ulang konfirmasi email sebagai kerentanan — penyerang dapat membanjiri inbox korban dengan memicu ribuan email konfirmasi. Tinjauan merekomendasikan penerapan rate limit 3 permintaan kirim ulang per alamat email per jam, konsisten dengan pedoman pencegahan brute-force OWASP.
Konsep Terkait
Anomaly detection adalah pelengkap yang lebih canggih untuk rate limiting: di mana rate limiting menerapkan ambang batas keras, deteksi anomali mengidentifikasi penyimpangan dari baseline perilaku yang dipelajari, menangkap kampanye penipuan yang tetap di bawah batas tetap. ASN diversity menjadi relevan ketika rate limit diterapkan per-IP dan aktor jahat mendistribusikan permintaan di banyak alamat IP untuk tetap di bawah ambang per-IP — analisis tingkat ASN mendeteksi pola agregat. reCAPTCHA v3 menyediakan skor risiko perilaku yang dapat dikombinasikan dengan rate limiting untuk menerapkan batas yang lebih ketat secara selektif ke sesi yang dinilai berpotensi otomatis.
Keterbatasan / Catatan
Rate limiting berbasis IP kurang efektif di lingkungan dengan carrier-grade NAT, di mana satu IP publik dapat mewakili ratusan pelanggan seluler yang sah. Rate limit per-IP 1 vote per 24 jam akan keliru mencegah sebagian besar pelanggan tersebut memilih. Inilah mengapa rate limiting pada platform kontes harus dilapisi dengan deduplikasi berbasis akun atau berbasis cookie ketika audiens seluler signifikan. Selain itu, batas laju yang ditetapkan terlalu agresif dapat menurunkan pengalaman bagi pemilih sah yang tiba dari jaringan bersama seperti kampus universitas, kantor korporat, atau hotspot Wi-Fi publik besar.