"Gara-gara 1 User, 1 Server Down?"
Bayangin, kamu udah bangun aplikasi dengan susah payah. Tiba-tiba, satu orang iseng spam 1 juta request dalam semenit. Boom! Server kamu kolaps.
Inilah Denial of Service.
Di STRIDE, DoS menggambarkan ancaman di mana sistem dibuat tidak tersedia bagi pengguna sah, baik sebagian atau seluruhnya.
Dan sayangnya, serangan ini gampang banget dilakukan kalau dari awal kita gak desain sistem dengan tahan banting.
Apa Itu Denial of Service?
Denial of Service (DoS) adalah serangan yang bertujuan membuat layanan tidak tersedia untuk pengguna sah.
Biasanya dilakukan dengan:
- Membanjiri server dengan trafik berlebih.
- Membuat resource server habis.
- Membuat proses menjadi macet.
Contoh Kasus Denial of Service
1. "Kayanya Udah Ga Ada" — Unprotected File Upload
Contoh:
Dulu banyak web yang ngizinin upload file tanpa size limit atau validasi file type.
Sebab:
- Tidak ada file size limit di server atau front-end.
- Tidak memvalidasi tipe file.
- Tidak ada kuota penyimpanan per user.
Akibat:
- Storage cepat penuh.
- Server crash karena disk habis.
- Potensi upload file berbahaya.
2. "Masih Banyak Kejadian Kayanya" — Login Bruteforce tanpa Proteksi
Contoh:
Login endpoint tanpa rate limit, CAPTCHA, atau account lockout.
Sebab:
- Fokus ke fungsi berjalan, lupa aspek keamanan.
- Tidak implementasi proteksi di layer aplikasi.
Akibat:
- Server overwork hanya untuk hashing password.
- Legitimate user tidak bisa login.
- Potensi downtime panjang.
3. "Wah Ini Advance" — Slowloris Attack di API Gateway
Contoh:
Serangan Slowloris membuka banyak koneksi HTTP dan mengirim data sangat lambat.
Sebab:
- Tidak ada idle timeout pada server.
- Tidak ada limitasi concurrent connection per IP.
Akibat:
- Slot koneksi penuh.
- User sah tidak bisa konek.
- Server terlihat "sehat" di CPU/network, tapi praktis tidak bisa dipakai.
🎁 Bonus "Kasus Lucu Tapi Nyata" — Server Down Gara-Gara Button Spam
Contoh:
Tombol "Check Status" di aplikasi bisa diklik tanpa cooldown. Setiap klik trigger API berat.
Sebab:
- Tidak ada debounce di front-end.
- Tidak ada batching/buffering request di backend.
Akibat:
- Server overload.
- Auto-restart karena high request spike.
- Bikin event besar kacau hanya karena tombol "iseng".
Way of Working: Menghadang DoS dari Awal
Langkah-langkah sederhana tapi vital buat mencegah DoS:
- Rate Limiting: Biar satu user gak bisa spam request sesuka hati.
- Timeout & Retry: Jangan biarin server nunggu request yang gak kelar-kelar.
- Circuit Breaker: Putus aliran request kalau backend mulai ngos-ngosan.
- CAPTCHA untuk Endpoint Sensitif: Supaya robot gak gampang flooding.
- Input Validation: Jaga supaya user gak ngirim query atau upload aneh-aneh.
- Asynchronous Processing: Pindahkan beban berat ke background job.
Intinya: "Expect abuse, not ideal use."
Kaitan Denial of Service dengan OWASP Top 10
Sedikit gambaran kaitannya:
- A07:2021 - Identification and Authentication Failures: Kalau login gak ada proteksi tambahan, rawan diserang bruteforce sampai server jebol.
- A05:2021 - Security Misconfiguration: Setting server atau API default tanpa limitasi sering jadi pintu masuk DoS.
Makanya, DoS itu sering muncul bukan karena sistem rusak, tapi karena "lupa proteksi dasar".
Penutup
Denial of Service itu kayak orang nyabotase jalanan pakai mobil mogok. Bukan ngerusak mobil orang, tapi menghalangi semua orang lain.
Kalau sistem kamu gampang "mogok", pelanggan bisa pindah ke tempat lain yang jalannya lebih lancar.
Dan itu, bro sis, baru kerasa kalau sudah kejadian.
Yuk, mulai bikin sistem tahan banting dari desain pertama!
"STRIDE bukan checklist, tapi mindset."
-- harscode.dev