Vulnarena

🔓 Broken Access Control

Broken Access Control terjadi saat pengguna bisa melakukan aksi (lihat, ubah, hapus) data yang seharusnya tidak mereka punya akses. Ini adalah celah yang sangat berbahaya!

🔍 Contoh-Contoh Masalah

💻 Contoh Kode yang Salah (Rentan)

<?php
// User id didapat dari URL tanpa validasi
$userId = $_GET['id'];
$query = "SELECT * FROM users WHERE id = $userId";
$result = mysqli_query($conn, $query);
?>
    

🔎 Penjelasan: Kode ini membiarkan siapa saja melihat data user lain dengan mengganti parameter id!

🛡️ Cara Mencegah (dengan Contoh Kode)

1️⃣ Validasi Role / Hak Akses di Server

<?php
session_start();
if ($_SESSION['role'] !== 'admin') {
  die("Akses Ditolak!");
}
?>
    

🔎 Penjelasan: Server harus selalu cek role user, meskipun di frontend disembunyikan.

2️⃣ Middleware (Node.js Express contoh)

function cekAdmin(req, res, next) {
  if (req.user.role !== 'admin') {
    return res.status(403).send("Akses ditolak!");
  }
  next();
}
app.get('/admin', cekAdmin, (req, res) => {
  res.send("Selamat datang admin!");
});
    

🔎 Penjelasan: Middleware ini memastikan hanya admin yang bisa akses /admin.

3️⃣ Hak Akses Minimum di Database

🔎 Penjelasan: Gunakan user database dengan akses minimum (SELECT saja, jangan ALL PRIVILEGES!).

4️⃣ Audit & Logging

🔎 Penjelasan: Log semua request sensitif. Audit log untuk mendeteksi percobaan bypass!

🧠 Studi Kasus Nyata