Skip to main content

Insecure Direct Object Reference (IDOR)

  • Penjelasan Singkat: Celah di mana user bisa mengakses data milik orang lain hanya dengan mengganti nomor ID pada URL browser.

Mode Pada Project Ini

  • Skenario Serangan: Pasien A melihat hasil lab-nya di URL view_report.php?id=102. Ia mengganti angka menjadi 101 dan berhasil melihat data HIV milik Pasien B.
  • Mode Fix (Aman): Sistem menerapkan Access Control Check.
    • Mitigasi: Sebelum menampilkan data, sistem mengecek: "Apakah ID Rekam Medis ini milik User yang sedang login?". Jika tidak, sistem menolak akses (Error 403 Forbidden).

🧠 Penjelasan Lengkap

Bayangkan Anda punya loker di gym dengan nomor 102. Kunci loker Anda hanya bisa membuka loker 102. Tapi suatu hari, Anda sadar bahwa dengan mengganti nomor loker di kunci (misal jadi 101), Anda bisa membuka loker orang lain!

IDOR adalah celah keamanan di mana:

  • Aplikasi menggunakan ID mentah (seperti nomor di URL) untuk mengakses data
  • Tanpa memeriksa hak akses pengguna, siapa pun bisa mengganti ID untuk melihat/mengubah data orang lain
  • Contoh nyata: Mengganti ?id=123 jadi ?id=124 di URL untuk mengakses data milik tetangga

🔍 Kategori Keamanan (OWASP)

Termasuk dalam:
OWASP Top 10 2021
Kategori: A01:2021 - Broken Access Control
(Menjadi risiko #1 paling kritis di OWASP 2021, naik dari peringkat 5 di 2017)

Apa itu Access Control?
Mekanisme yang memastikan pengguna hanya bisa mengakses data/fungsi yang memang diperuntukkan untuknya. Ketika mekanisme ini gagal, terjadilah IDOR.

🌍 Di Mana Biasa Terjadi?

Serangan ini umum ditemukan di:

  1. Aplikasi web dengan URL berbasis ID
    • profile.php?id=123
    • invoice.php?order_id=987
  2. API endpoints
    • GET /api/users/456 (tanpa validasi kepemilikan)
  3. Fungsi edit/hapus data
    • delete_comment.php?id=789 (bisa hapus komentar orang lain)
  4. Sistem dengan ID prediktif
    • Nomor invoice berurutan (INV-001, INV-002)
    • NIK/KTP yang bisa ditebak

💥 Mengapa Sangat Berbahaya?

  1. Kebocoran Data Massal: 1 celah IDOR bisa membocorkan seluruh database pengguna
  2. Pelanggaran Privasi: Data medis, keuangan, atau pribadi bisa diakses publik
  3. Manipulasi Data: Penyerang bisa mengubah data orang lain (misal: mengganti alamat pengiriman)