HTTP 상태 코드 400, 401, 403 차이

Web · 2022. 8. 14. 23:40

로그인에 실패할 때 클라이언트에 어떤 http 상태 코드를 보내줘야 할까?

  1. 필수 입력값이 누락되거나 형식이 맞지 않다면, 400 Bad Request
  2. 아이디나 패스워드가 틀렸다면, 401 Unauthorized
  3. 자격 증명은 유효하지만, 권한이 없다면, (ex. 관리자 권한 필요) 403 Forbidden

의미 상으로는 이렇지만,
3번의 경우 보안상 리소스가 있다는 것을 악의적 공격자에게 알려주고 싶지 않다면, 404 Not Found를 쓸 수 있다.
깃허브에서 이런 방식을 채택하고 있다. (권한이 없는 레포에 접근하려 할 때 404를 리턴한다.)


참고: Forbidden, Unauthorized, or What Else?