Mmaiqai.com
🔐 API Testing · Chương 4 · Mục 4.1 · OWASP #1

Broken Object Level Authorization (BOLA/IDOR)

🎯 Mục tiêu học: hiểu vì sao đây là hạng mục #1 trong OWASP API Security Top 10 — lỗi phổ biến nhất và dễ khai thác nhất trong thực tế.

🔗 Liên hệ với Chương 2: toàn bộ Chương 4 là phần đào sâu của Nhóm 6 — Bảo mật & phân quyền trong khung 7 nhóm kịch bản đã học ở Mục 2.1. Nhóm đó chỉ có 1 dòng gợi ý ngắn; 10 mục của chương này chính là 10 cách cụ thể để trả lời câu hỏi "có truy cập/thao tác được dữ liệu của người khác không".

Rủi ro là gì

API nhận 1 ID tài nguyên (trên URL, query param, hoặc body) nhưng không kiểm tra người gọi có thực sự sở hữu/được phép truy cập đúng tài nguyên đó không — chỉ kiểm tra "đã đăng nhập" là đủ. Đây chính là khái niệm IDOR đã nhắc tới nhiều lần ở Chương 2 (Mục 2.2, 2.4, 2.5) — giờ formal hoá thành 1 hạng mục rủi ro riêng.

# Khách hàng CUS1001 đăng nhập, có token hợp lệ
GET https://api.example.com/v1/orders/ORD1003
Authorization: Bearer <token của CUS1001>

# Đơn hàng ORD1003 thực ra thuộc CUS1002 — nếu server chỉ check
# "token hợp lệ" mà không check "orderId này có thuộc CUS1001 không"
# → CUS1001 vẫn xem được đơn hàng của người khác

Checklist kiểm tra

Cách kiểm tra

Mã TCNội dungKỳ vọng
TC-BOLA-01Đổi ID tài nguyên trên URL/path param sang ID không thuộc quyền sở hữu của token đang dùngBị từ chối (403/404), không trả về dữ liệu của người khác
TC-BOLA-02Nếu ID là số nguyên tuần tự, thử tăng/giảm dần (ORD1001, ORD1002...) để dò tài nguyên khácMỗi ID không thuộc quyền sở hữu đều bị chặn nhất quán, không lộ dù chỉ 1 phần dữ liệu
TC-BOLA-03Kiểm tra ở MỌI hành động, không chỉ GET (bao gồm cả PUT/PATCH/DELETE tới ID của người khác)Tất cả hành động ghi/xoá đều bị chặn tương tự, không chỉ riêng đọc dữ liệu

📌 Ghi nhớ

BOLA là lỗi dễ tìm nhất (chỉ cần đổi 1 ID trên URL) nhưng cũng hay bị bỏ sót nhất vì happy-path test luôn dùng đúng ID của chính tài khoản đang test. Luôn chủ động test với ID KHÔNG thuộc về mình.

📖 Thuật ngữ Anh–Việt (mục này)

Đề thi dùng thuật ngữ tiếng Anh — nhớ đúng cụm bên trái. Bấm 🔊 để nghe từng từ, hoặc "Đọc tất cả" để nghe lần lượt Anh → (vài giây) → Việt.

Thuật ngữ (EN)Nghĩa & ghi nhớ nhanh
BOLABroken Object Level Authorization — không kiểm tra quyền sở hữu tài nguyên theo ID
IDORInsecure Direct Object Reference — tên gọi khác quen thuộc hơn của BOLA
Object ownershipQuyền sở hữu tài nguyên — xác nhận đúng người dùng đúng dữ liệu của mình

📎 Nội dung do maiqai.com biên soạn dựa trên OWASP API Security Top 10 (2023, CC BY-SA 4.0), diễn giải lại bằng tiếng Việt kèm ví dụ minh hoạ riêng.