티스토리 뷰
1. HTTP 상태 401(Unauthorized) vs 403(Forbidden) 차이
[ HTTP 상태 401(Unauthorized) 이란? ]
HTTP 상태 중 401(Unauthorized)는 클라이언트가 인증되지 않았거나, 유효한 인증 정보가 부족하여 요청이 거부되었음을 의미하는 상태값이다. 즉, 클라이언트가 인증되지 않았기 때문에 요청을 정상적으로 처리할 수 없다고 알려주는 것이다.
401(Unauthorized) 응답을 받는 대표적인 경우는 로그인이 되어 있지 않은 상태에서 무언가 요청을 하는 경우이다. 예를 들어 어떤 쇼핑몰 사이트에 로그인을 하지 않았는데 나의 결제 내역과 같은 정보를 달라고 하면 401(Unauthorized)를 반환받게 될 것이다.
이와 많이 혼동되는 HTTP 상태로 403(Forbidden)이 있다.
[ HTTP 상태 403(Forbidden) 이란? ]
HTTP 상태 중 403(Forbidden)는 서버가 해당 요청을 이해했지만, 권한이 없어 요청이 거부되었음을 의미하는 상태값이다. 즉, 클라이언트가 해당 요청에 대한 권한이 없다고 알려주는 것이다.
403(Forbidden) 응답을 받는 대표적인 경우는 로그인하여 인증되었지만 접근 권한이 없는 무언가를 요청하는 경우이다. 예를 들어 어떤 쇼핑몰에 접속하여 로그인까지 하였지만, 다른 사용자의 결제 내역을 달라고 하면 403(Forbidden)을 반환받게 될 것이다.
[ 권한이 없다면 항상 403(Forbidden) 일까? ]
앞서 설명하였듯 403(Forbidden)는 권한이 없음을 의미한다. 하지만 이 부분에는 주의해야 할 부분이 있는데, 바로 403(Forbidden)이 발생했다는 것은 "해당 요청에 대한 자원이 존재함"을 내포하고 있기 때문이다. 즉, "리소스의 존재 여부"를 알 수 있으므로 이러한 부분은 취약점을 찾아서 파고 드려는 공격자에게 힌트를 주는 셈이 될 수도 있다.
따라서 보안 정책에 따라서 권한이 없음을 알리는 것이 아니라, 자원의 존재 자체를 숨기고 싶은 경우에는 404(Not Found)를 사용하는 것이 적합할 수도 있다. 대표적으로 다른 사용자 Github의 비공개 레포지토리에 접근하는 경우에는 403(Forbidden)이 아닌 404(Not Found)를 내려주고 있다. 그러므로 응답 상태에 정답이 있다기 보다는 상황에 따라 유연하게 가져갈 수 있음을 참고하는 것이 좋다.
2. 401(Unauthorized)과 403(Forbidden) 차이 핵심 정리
[ 401(Unauthorized)과 403(Forbidden) 차이 핵심 정리 ]
- 401(Unauthorized)
- 상태: 클라이언트가 인증되지 않았거나, 유효한 인증 정보가 부족하여 요청이 거부됨
- 예시: 사용자가 로그인되지 않은 경우
- 403(Forbidden)
- 상태: 서버가 해당 요청을 이해했지만, 권한이 없어 요청이 거부됨
- 예시: 사용자가 권한이 없는 요청을 하는 경우
'네트워크' 카테고리의 다른 글
[HTTP] HTTP 메소드의 멱등성(Idempotence)과 Delete 메소드가 멱등한 이유 (10) | 2023.01.03 |
---|---|
[HTTP] HTML 폼(form) 요청이 GET, POST만 가능하고 PATCH, PUT, DELETE은 불가능한 이유 (5) | 2022.03.11 |
[Web] HTTP와 HTTPS의 개념 및 차이점 (34) | 2020.10.17 |
[Web] Forward와 Redirect 차이 (30) | 2019.09.10 |
[네트워크 프로그래밍] Http 프로그래밍과 Socket 프로그래밍 차이 (36) | 2019.02.17 |