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ã TC | Nội dung | Kỳ 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ùng | Bị từ chối (403/404), không trả về dữ liệu của người khác |
| TC-BOLA-02 | Nếu ID là số nguyên tuần tự, thử tăng/giảm dần (ORD1001, ORD1002...) để dò tài nguyên khác | Mỗ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-03 | Kiể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 |
|---|---|
| BOLA | Broken Object Level Authorization — không kiểm tra quyền sở hữu tài nguyên theo ID |
| IDOR | Insecure Direct Object Reference — tên gọi khác quen thuộc hơn của BOLA |
| Object ownership | Quyề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.