Suatu hari, klien Alifbata Digital melaporkan websitenya sering error 500. Awalnya hanya sesekali. Lalu makin sering. Tim kami langsung membuka Cloudflare Analytics. Jawabannya cepat ketemu, ada flood request dari luar negeri.
Berikut cerita lengkapnya. Dari gejala, analisis data, sampai satu custom rule Cloudflare yang memulihkan website klien.
Gejala Awal Error 500 yang Datang dan Pergi
Laporan dari klien tidak dramatis. Website kadang normal. Kadang muncul error 500. Artinya website kadang dapat dibuka, kadang tidak bisa sama sekali. Error seperti ini menyesatkan. Naluri pertama mencurigai kode, database, atau konfigurasi server. Padahal penyebabnya bisa ada di luar aplikasi.
Karena itu kami tidak langsung membuka kode. Kami memeriksa traffic dulu.
Data Menunjukkan Tanda-Tanda Flood Request

Dashboard Cloudflare Analytics (7 hari terakhir) menunjukkan angka yang janggal:
| Metrik | Nilai |
|---|---|
| Total request | 1,18 juta |
| Total data transfer | 9,7 GB |
| Total visits | 5,31 ribu |
| Cache hit rate | 0,06% |
| 5xx error rate | 36,37% |
Lihat selisih antara request dan visit. Ada 1,18 juta request, tetapi hanya 5,31 ribu kunjungan. Satu kunjungan rata-rata menghasilkan lebih dari 200 request. Manusia tidak berperilaku begitu. Ini ciri khas bot traffic.
Grafik requests over time memperkuat dugaan ini. Garis melonjak tajam. Puncaknya sekitar 151 ribu request dalam satu jam, pada 20 Oktober pukul 05.00. Grafik data transfer naik di waktu yang sama.
Jadi masalahnya bukan bug. Server klien sedang dibanjiri.
Mengapa Flood Request Memicu Error 500
Petunjuk terpenting ada di cache hit rate: hanya 0,06%.
Artinya hampir semua request tidak dilayani dari cache. Semuanya diteruskan ke server asal (origin). Setiap request memaksa server memproses halaman dari nol.
Saat jumlahnya ratusan ribu, server kehabisan tenaga. Hasilnya adalah 5xx error rate 36,37%. Lebih dari sepertiga request gagal, dan pengunjung asli ikut terdampak.
Rantai kejadiannya sederhana:
- Bot mengirim request dalam jumlah besar.
- Request melewati cache dan menghantam origin.
- Server kewalahan.
- Error 500 muncul untuk semua orang.
Menelusuri Sumber Serangan
Setelah yakin ini flood, pertanyaan berikutnya: dari mana dan ke mana? Dua panel menjawabnya, yaitu Top paths dan Top countries.
Top Paths Serangan Terpusat di /shop
Tiga path teratas menyedot hampir seluruh traffic:
- 583,28 ribu request
- 398,56 ribu request
- 174,11 ribu request
Ketiganya berada di bawah path /shop. Totalnya sekitar 1,16 juta, atau sekitar 98% dari seluruh request.
Serangan tidak menyebar. Ia menyasar satu area.

Top Countries Serangan dari Luar Negeri
Sembilan negara teratas adalah Brazil, Argentina, Kolombia, Bangladesh, Maroko, Meksiko, Afrika Selatan, Pakistan, dan Venezuela. Brazil sendiri menyumbang 329,69 ribu request.
Indonesia tidak ada di daftar. Padahal target audiens klien berada di Indonesia.
Ini temuan kuncinya. Traffic yang membanjiri website bukan traffic dari pengunjung yang dituju klien.

Langkah Darurat Under Attack Mode
Sebelum menyusun solusi permanen, kerusakan harus dihentikan dulu. Kami mengaktifkan Under Attack Mode di akun Cloudflare klien.
Mode ini menampilkan halaman pemeriksaan sebelum pengunjung masuk. Browser asli biasanya lolos. Skrip bot sederhana biasanya gagal.
Hasilnya langsung terasa. Tekanan ke server turun, dan error 500 mereda. Masalah utama teratasi.
Tetapi ada harga yang harus dibayar.
Mengapa Under Attack Mode Tidak Cocok untuk Jangka Panjang
Under Attack Mode memang menyelesaikan masalah. Namun ia bekerja tanpa pilih-pilih. Pemeriksaan berlaku untuk semua pengunjung, termasuk yang sah. Dampaknya meluas:
- Mesin pencari terganggu. Crawler seperti Googlebot tidak selalu lolos halaman pemeriksaan. Jika crawler sering gagal masuk, proses indexing bisa terhambat. Ranking di hasil pencarian pun bisa terpengaruh.
- API bisa rusak. Halaman pemeriksaan membutuhkan JavaScript dan browser. Klien API, aplikasi mobile, dan sistem integrasi tidak bisa menjalankannya. Request mereka ikut tertahan atau gagal.
- Webhook dan layanan pihak ketiga ikut terblokir. Notifikasi dari payment gateway, kurir, atau sistem lain bisa tidak sampai.
- Pengunjung asli merasa terganggu. Mereka harus menunggu pemeriksaan sebelum halaman terbuka. Sebagian mungkin langsung pergi.
Kesimpulannya jelas. Under Attack Mode cocok sebagai pemadam kebakaran. Ia bukan sistem pengamanan harian.
Karena website ini dipercayakan kepada kami, kami tidak ingin klien menanggung efek samping itu. Kami butuh filter yang lebih presisi.
Solusi Utama Satu Custom Rule di Cloudflare WAF
Dari data tadi, kami menarik tiga pola:
- Serangan menyasar path /shop.
- Serangan datang dari luar Indonesia.
- Serangan bukan berasal dari bot sah seperti mesin pencari.
Ketiganya kami terjemahkan menjadi satu WAF custom rule:
(http.request.uri.path contains "/shop" and ip.src.country ne "ID" and not cf.client.bot)
Membedah Rule Ini
Rule ini punya tiga kondisi. Ketiganya harus terpenuhi sekaligus.
1. http.request.uri.path contains "/shop"
Rule hanya menyentuh path yang mengandung /shop. Bagian website lain aman.
2. ip.src.country ne "ID"
Rule hanya berlaku untuk request dari luar Indonesia. Pengunjung Indonesia lolos tanpa gangguan.
3. not cf.client.bot
Bot terverifikasi, seperti crawler mesin pencari, dikecualikan. Dengan begitu SEO tetap terjaga.
Rule ini sempit dan terarah. Itulah kekuatannya.
Hasilnya Traffic Kembali Normal
Setelah rule aktif, flood request berhenti menembus server. Grafik requests over time turun tajam. Data transfer menyusut ke level normal.
Server kembali tenang. Error 500 hilang. Pengunjung asli mengakses website seperti biasa.
Karena rule sudah menangani akar masalah, Under Attack Mode tidak lagi dibutuhkan. Kami menonaktifkannya. Pemeriksaan untuk semua pengunjung berhenti, dan efek sampingnya ikut hilang.
Kasus selesai.
Pelajaran dari Penanganan Kasus Ini
1. Mulai dari Data, Bukan Dugaan
Error 500 tampak seperti masalah aplikasi. Padahal sumbernya serangan. Analytics membuka fakta itu dalam hitungan menit.
2. Pantau Rasio Request terhadap Visit
Satu kunjungan wajar menghasilkan puluhan request. Ratusan request per kunjungan adalah alarm.
3. Cache Hit Rate Rendah Itu Rentan
Tanpa cache, server menanggung semuanya. Saat flood datang, server menjadi titik lemah.
4. Under Attack Mode untuk Darurat, Custom Rule untuk Solusi
Under Attack Mode cepat dan efektif. Tetapi ia bisa mengganggu mesin pencari, API, dan integrasi. Custom rule lebih presisi dan lebih aman bagi ekosistem website.
5. Rule Sempit Lebih Baik daripada Rule Luas
Kami tidak memblokir seluruh website. Kami hanya membidik path, negara, dan jenis traffic yang bermasalah.
6. Pahami Target Audiens Klien
Rule ini bisa dibuat karena kami tahu pasar klien ada di Indonesia. Tanpa konteks itu, memblokir traffic luar negeri bisa salah sasaran.
Catatan dan Langkah Lanjutan
Rule ini efektif, tetapi punya konsekuensi. Pengunjung sah dari luar Indonesia yang membuka /shop ikut terkena. Jika klien kelak melayani pasar internasional, rule ini perlu ditinjau ulang.
Beberapa langkah lanjutan yang kami rekomendasikan:
- Rate limiting untuk membatasi request per IP.
- Cache rule agar lebih banyak request dilayani dari edge Cloudflare.
- Bot Fight Mode atau Super Bot Fight Mode untuk deteksi bot yang lebih luas.
- Alert otomatis saat 5xx error rate atau jumlah request melonjak.
Flood request bisa menimpa website siapa saja. Gejalanya sering menyamar sebagai error 500 biasa.
Dalam kasus ini, alurnya jelas. Alifbata Digital membaca data di Cloudflare Analytics. Kami menemukan pola serangan. Kami meredamnya dengan Under Attack Mode. Lalu kami menggantinya dengan WAF custom rule yang presisi.
Under Attack Mode menyelamatkan website klien di menit-menit kritis. Tetapi custom rule yang menyelesaikan masalah dengan rapi, tanpa mengorbankan mesin pencari, API, dan pengunjung asli.
Kuncinya: baca data dengan teliti sebelum bertindak.



