궁금한 개발 이야기/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를 사용하도록 권고하고 있다. 무조건적으로 쓰지말라는건 아니지만 보안 등 여러 상황을 고려하여 유연하게 응답 코드를 사용할 수 있도록 참고하는 것이 좋다.