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