API Security
Pelajari risiko utama pada API serta praktik desain yang aman: autentikasi, otorisasi, validasi input, dan pembatasan laju.
Tujuan Pembelajaran
- Memahami mengapa API menjadi target utama
- Membedakan autentikasi dan otorisasi pada API
- Mengenali kategori risiko dalam OWASP API Security Top 10
- Menerapkan praktik dasar: validasi, rate limiting, dan pencatatan
01Mengapa API perlu perhatian khusus
API membuka fungsi dan data aplikasi untuk klien web, mobile, dan mitra. Karena ia berbicara langsung ke logika bisnis dan basis data, kesalahan desain dapat membuka banyak data sekaligus.
Aplikasi modern memiliki banyak endpoint, sebagian tidak terdokumentasi atau sudah usang. Inventarisasi API yang lengkap adalah langkah pertama keamanan.
02Autentikasi dan otorisasi
Autentikasi memastikan siapa pemanggilnya, misalnya lewat token OAuth 2.0 atau JWT yang divalidasi dengan benar. Otorisasi memastikan apa yang boleh dilakukan pemanggil tersebut.
Kelemahan paling umum ada di otorisasi: server harus memeriksa bahwa pengguna berhak atas objek yang diminta di setiap permintaan, bukan hanya percaya pada ID yang dikirim klien.
03Kategori risiko utama
OWASP API Security Top 10 merangkum risiko yang sering ditemui. Beberapa di antaranya:
- Broken object level authorization: akses ke objek milik pengguna lain
- Broken authentication: token lemah, tidak kedaluwarsa, atau tidak divalidasi
- Excessive data exposure: respons membawa lebih banyak field dari yang dibutuhkan
- Lack of resources and rate limiting: tidak ada batas permintaan
- Security misconfiguration dan inventaris API yang tidak terkelola
04Praktik desain yang aman
Validasi semua input di sisi server berdasarkan skema, tolak yang tidak sesuai, dan kembalikan hanya field yang perlu. Terapkan rate limiting dan kuota untuk menahan penyalahgunaan serta lonjakan beban.
Gunakan TLS, simpan rahasia di pengelola rahasia, jangan taruh token di URL, dan catat peristiwa penting tanpa menyertakan data sensitif. Pasang API gateway untuk kebijakan yang konsisten.
Contoh Praktis (Aman)
Pemeriksaan otorisasi di sisi serverPseudo-code defensif: server selalu memastikan pemilik objek sama dengan pengguna yang terautentikasi sebelum mengembalikan data.
fungsi ambilPesanan(permintaan): pengguna = verifikasiToken(permintaan.token) jika pengguna kosong -> kembalikan 401 pesanan = cariPesanan(permintaan.idPesanan) jika pesanan kosong -> kembalikan 404 jika pesanan.pemilik != pengguna.id -> kembalikan 403 kembalikan hanyaFieldYangDibutuhkan(pesanan)
Rangkuman
- API membuka logika dan data sehingga desain yang lemah berdampak besar
- Autentikasi menjawab siapa, otorisasi menjawab apa yang boleh
- Otorisasi tingkat objek harus diperiksa di setiap permintaan
- Validasi, rate limiting, TLS, dan pencatatan membentuk dasar API aman
Mini Quiz
Pilih satu jawaban untuk setiap soal, lalu tekan "Periksa Jawaban".
Apa perbedaan utama autentikasi dan otorisasi?
Mengapa server tidak boleh hanya percaya pada ID objek yang dikirim klien?
Apa fungsi rate limiting pada API?