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

Broken Object Property Level Authorization (BOPLA)

🎯 Mục tiêu học: hiểu 2 dạng rủi ro ở cấp độ field/property (khác BOLA là ở cấp độ toàn bộ object) — gộp lại từ 2 hạng mục cũ: Excessive Data Exposure và Mass Assignment.

2 dạng rủi ro

DạngRủi roVí dụ
Excessive Data ExposureResponse trả về nhiều field hơn mức client cần, để lộ dữ liệu nội bộ/nhạy cảmGET /v1/orders/{id} trả kèm field internalCostPrice (giá vốn nội bộ) dù UI không hiển thị
Mass AssignmentClient gửi thêm field không được phép sửa, nhưng server vẫn áp dụng vì tự động map toàn bộ body vào objectPATCH /v1/orders/{id} gửi thêm { "status": "PAID" } dù field này lẽ ra chỉ hệ thống thanh toán mới được đổi

Checklist kiểm tra

Excessive Data Exposure

Mã TCNội dungKỳ vọng
TC-BOPLA-01Rà soát toàn bộ field trong response, đối chiếu với những gì UI/tài liệu thực sự cần hiển thịKhông có field nội bộ/nhạy cảm (giá vốn, ghi chú nội bộ, hash mật khẩu...) bị lộ ra ngoài

Mass Assignment

Mã TCNội dungKỳ vọng
TC-BOPLA-02Gửi thêm field không có trong tài liệu API vào body (vd status, isAdmin, role) khi tạo/cập nhậtServer bỏ qua field không được phép, không áp dụng theo giá trị client tự gửi

📌 Ghi nhớ

BOPLA khác BOLA ở chỗ: dù bạn đang thao tác đúng tài nguyên của chính mình (không vi phạm BOLA), vẫn có thể lộ field không nên thấy, hoặc sửa field không nên sửa được.

📖 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
Excessive Data ExposureLộ dữ liệu thừa — response chứa field nhạy cảm không cần thiết
Mass AssignmentGán hàng loạt — server tự động áp dụng mọi field client gửi mà không lọc
Allowlist fieldDanh sách field được phép nhận/trả — cách phòng chống chuẩn cho cả 2 rủi ro trên

📎 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.