궁금한 개발 이야기/CS
HTTP 응답 상태 코드
yun_9
2024. 7. 9. 23:21
상태 코드 | |
200 | 클라이언트의 요청을 정상적으로 수행함 |
201 | 클라이언트가 아떠한 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨 (POST를 통한 리소스 생성 작업 시) |
상태 코드 | |
400 | 클라이언트의 요청이 부적절 할 경우 사용되는 응답 코드 |
401 | 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청했을 때 사용하는 응답 코드 |
(로그인 하지 않은 상태의 유저가 무언가 요청했을 때, 쇼핑몰에 로그인하지 않았는데 결제 내역같은 정보 달라고 할 때) | |
403 | 서버가 요청을 이해했지만, 권한이 없어 요청이 거부되었을 때 사용하는 응답 코드 |
(쇼핑몰에 접속하여 로그인까지 하였지만, 다른 사용자의 결제 내역을 달라고 하면 403 반환, 웬만하면 404 권고) | |
404 | 서버가 요청한 페이지나 파일을 찾을 수 없는 경우(존재하지 않는 경우)에 사용하는 응답 코드 |
405 | 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 경우 사용하는 응답 코드 |
상태 코드 | |
301 | 클라이언트가 요청한 리소스에 대한 URI가 변경되었을 때 사용하는 응답 코드 |
(응답 시 Location header에 변경된 URI를 적어 줘야 한다.) | |
500 | 서버에 문제가 있을 경우 사용하는 응답 코드 |
왜 403을 잘 쓰지 않을까?
403은 권한이 없음을 의미하지만 403이 발생했다는 것은 "해당 요청에 대한 자원이 존재함"을 내포하고 있기 때문에 "리소스의 존재 여부"를 알려주는 꼴이 되어버린다. 이러한 부분은 취약점을 찾아서 파고 드려는 공격자에게 힌트를 주는 셈이 될 수 있다.
따라서 보안 정책에 따라 권한이 없음을 알리는 것이 아니라, 자원의 존재 자체를 숨기고 싶은 경우에 404를 사용하도록 권고하고 있다. 무조건적으로 쓰지말라는건 아니지만 보안 등 여러 상황을 고려하여 유연하게 응답 코드를 사용할 수 있도록 참고하는 것이 좋다.