403 Forbidden은 HTTP 프로토콜에서 정의된 상태 코드 중 하나로, 서버가 클라이언트의 요청을 이해했지만 해당 요청에 대한 접근 권한을 거부했을 때 반환된다. 이 코드는 클라이언트에게 요청이 정상적으로 전송되었으며, 서버가 이를 처리할 방법을 알고 있지만, 인증 자격이 없거나 권한이 부족함을 의미한다.
정의 및 사양
- 정식 명칭: 403 Forbidden
- RFC: RFC 7231 (HTTP/1.1 Semantics and Content) – 섹션 6.5.3
- 의미: "The server understood the request but refuses to authorize it."
적용 사례
- 인증 실패
- 사용자가 로그인하지 않았거나, 로그인했지만 요청한 리소스에 대한 권한이 없는 경우.
- 접근 제한
- 서버 관리자가 특정 IP 주소, 사용자 에이전트, 혹은 지리적 위치에 대해 접근을 차단했을 때.
- 파일 권한 설정
- 웹 서버의 파일 시스템 권한이 잘못 설정돼서 웹 서버 프로세스가 해당 파일을 읽을 수 없을 경우.
- 정책 위반
- API 키가 없거나 잘못된 경우, 혹은 사용량 제한을 초과했을 때도 403 응답이 반환될 수 있다.
차이점
- 401 Unauthorized: 인증이 필요하거나 인증이 실패한 경우에 사용된다. 클라이언트는 인증 정보를 제공하거나 갱신해야 한다.
- 403 Forbidden: 인증은 성공했으나 권한이 부족한 경우이며, 추가적인 인증 시도만으로는 문제를 해결할 수 없을 가능성이 높다.
헤더와 본문
- WWW-Authenticate 헤더는 일반적으로 401 응답에 포함되지만, 403 응답에도 포함될 수 있다(특정 인증 스킴을 안내할 때).
- 응답 본문에는 오류 설명, 대체 URL, 혹은 관리자 연락처와 같은 추가 정보를 제공할 수 있다.
웹 보안에서의 역할
403 코드는 권한 관리와 접근 제어의 중요한 지표이며, 보안 로그 분석 시 공격자의 무단 접근 시도 여부를 판단하는 데 활용된다. 서버 관리자는 403 응답을 적절히 설정함으로써 민감한 리소스에 대한 무단 접근을 방지하고, 사용자에게 명확한 오류 메시지를 제공한다.
관련 상태 코드
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 405 Method Not Allowed
- 500 Internal Server Error
참고 문헌
- RFC 7231, "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", 2014.
- IETF HTTP Working Group 문서 및 표준.