Excessive Data Exposure
GET · /api/practice/level5/directory · Chuyên sâu
Mô tả bài tập
Excessive Data Exposure xảy ra khi server trả về nhiều dữ liệu hơn mức client thực sự cần, thường là do lười lọc field (trả thẳng nguyên object trong database ra response) rồi để tầng hiển thị (UI) tự chọn field cần dùng - nhưng bất kỳ ai gọi thẳng API (bỏ qua UI) đều thấy được toàn bộ. GET /directory được giới thiệu là 'danh bạ nội bộ' (chỉ cần hiển thị tên), nhưng hãy xem kỹ response - bạn sẽ thấy email, số dư, ghi chú riêng tư (secretNote), và role của TẤT CẢ tài khoản trong hệ thống, không chỉ tài khoản của bạn.
Mục tiêu học được
- Hiểu Excessive Data Exposure là gì và vì sao nó khác với BOLA (ở đây không cần đổi ID gì cả, response mặc định đã lộ hết)
- Luyện thói quen luôn đọc kỹ TOÀN BỘ response body, không chỉ field mà UI/tài liệu có nhắc tới
- Biết rằng 'ẩn field ở giao diện' không phải là bảo mật - dữ liệu vẫn nằm trong response API
💡 Bài này được đánh dấu hoàn thành ngay khi bạn gọi endpoint - nhiệm vụ thật sự là tự nhận ra vấn đề khi đọc response, hãy đối chiếu với learningGoals ở trên.
Lệnh curl
curl -s "http://testing-api.systemhub.uk/api/practice/level5/directory" -H "X-Practice-Token: YOUR_TOKEN"
Các bước làm trên Postman
- GET http://testing-api.systemhub.uk/api/practice/level5/directory
- Đọc kỹ từng phần tử trong mảng 'directory' trả về
- Liệt kê ra những field mà một API 'danh bạ' (chỉ cần tên) đáng lẽ không nên trả về (email, balance, secretNote, role...)
Đăng nhập để lệnh curl ở trên tự động điền sẵn Practice Token thật của bạn.
🧪 Thử nghiệm trực tiếp
Gọi API ngay tại đây. Nếu bạn đã đăng nhập, tiến độ sẽ được ghi nhận tự động khi gọi đúng như kỳ vọng của bài.
Kết quả
Status: