판정 단서
객체
/users/2/orders처럼 다른 사람의 자원 번호가 보이면
소유자 검증을 본다.
기능
일반 사용자가 관리자 기능을 호출하면 역할 기반 검증을 본다.
응답
필요 이상 필드가 내려오면 노출 범위와 직렬화 정책을 본다.
01
인증 상태
세션, 토큰, 만료, 재인증 필요 여부를 먼저 확인한다.
02
객체 소유
요청 객체가 사용자 계정과 연결되어 있는지 서버에서 대조한다.
03
기능 권한
URL을 아는 것과 기능을 실행할 권한은 별도 조건으로 본다.
04
입력 필드
클라이언트가 보낸 역할, 가격, 소유자 필드는 신뢰하지 않는다.
05
응답 범위
목록과 상세 응답에서 민감 필드가 과하게 포함됐는지 줄인다.
| 유형 | 로그 단서 | 서버 통제 | 답안 표현 |
|---|---|---|---|
| BOLA | 타인 객체 ID 직접 접근 | 소유자 확인, 간접 식별자 | 객체 단위 인가 실패 |
| BFLA | 관리 기능을 일반 계정이 호출 | 역할별 기능 허용 목록 | 기능 단위 인가 실패 |
| Mass Assignment |
role, price 필드 주입
|
허용 필드만 바인딩 | 입력 필드 검증 실패 |
| 과도한 노출 | 응답에 주민번호, 토큰, 내부 ID 포함 | 응답 DTO와 마스킹 | 최소 응답 원칙 위반 |
오답 경계
화면에서 버튼을 숨기는 것은 인가가 아니다. 서버 검증이 기준이다.
채점 핵심
취약점 이름, 원인, 재현 단서, 서버 측 대응을 한 묶음으로 쓴다.
운영 보강
실패 로그, 관리자 기능 감사, 권한 변경 이력을 함께 남긴다.