SecLab
Access ControlchallengeĐộ khó 4/533 phút

Thử thách: vá một dịch vụ đầy lỗi BOLA

Mục tiêu: Sau bài này bạn viết được một ma trận test authz chạy trong CI, thứ khiến cả module này không quay lại được.

V8API5:2023API1:2023A01:2025access-control
Bước 1 / 5 · read3 phút

Mục tiêu

Năm bài trước cho bạn năm lớp: mệnh đề trong truy vấn, mặc định từ chối ở pipeline, DTO riêng cho input, quy tắc tập trung, RLS ở tầng dữ liệu. Bài này là lớp thứ sáu, và nó khác bản chất năm lớp kia: nó không chặn gì cả — nó phát hiện khi năm lớp kia bị gỡ.

Tình huống khác m1-challenge một cách có chủ ý: ở đó bạn phân loại và sắp thứ tự. Ở đây bạn viết code, và code đó phải còn hiệu lực sau khi bạn rời dự án.

Việc phải làm. Một dịch vụ quản lý hợp đồng có bốn endpoint và ba vai. Ma trận đầy đủ là 4 endpoint × 3 vai × 2 (chủ sở hữu / không chủ sở hữu) = 24 trường hợp. Viết một test sinh ra cả 24 và assert kết quả đúng cho từng cái.

Vì sao bài này ở mức 4: phần khó không phải viết test mà là quyết định kết quả mong đợi của 24 ô đó. Vài ô có câu trả lời hiển nhiên. Vài ô là quyết định nghiệp vụ chưa ai ghi lại, và việc bạn phải điền chúng vào một bảng là lần đầu tiên câu hỏi được đặt ra.

Xem lộ trình

Bình luận

Tham gia thảo luận
Đăng ký để bình luận

Bình luận cần tài khoản đã hoàn thành ít nhất một bài học. Điều kiện đó là thứ giữ cho luồng thảo luận này còn đáng đọc: mỗi ý kiến gắn với một người có thể bị hỏi lại, và reputation tích luỹ theo thời gian.

Đăng kýĐăng nhập

Bạn vẫn đọc được toàn bộ bình luận dưới đây mà không cần tài khoản. Đăng nhập xong bạn sẽ quay lại đúng chỗ này, không phải đầu trang.

Đang tải bình luận…