귀하는 로그인되어 있지 않습니다. 이대로 편집하면 귀하의 IP 주소가 편집 기록에 남게 됩니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!== 개요 == HTTP 401(Unauthorized)과 403(Forbidden) 상태 코드는 모두 클라이언트의 요청에 대한 접근 거부를 나타내는 4xx 오류 상태 코드이다. 그러나 두 상태 코드는 접근이 거부된 이유와 해결 방법에서 중요한 차이를 보인다. 이 문서에서는 두 상태 코드의 차이점과 각각의 적절한 사용 사례를 설명한다. == 401 Unauthorized == === 의미 === * '''정의''': 요청한 리소스에 대한 인증(Authentication)이 필요함을 나타낸다. * '''핵심 특징''': 클라이언트가 아직 인증되지 않았거나, 제공된 인증 정보가 유효하지 않음을 의미한다. === 사용 예시 === * '''로그인이 필요한 API 엔드포인트 접근''' * '''만료된 인증 토큰 사용''' * '''잘못된 API 키 사용''' === 구현 특징 === * '''응답 헤더''': WWW-Authenticate 헤더를 포함해야 한다. * '''예시 응답''': <pre> HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Application" </pre> === 해결 방법 === * '''유효한 인증 정보 제공''' * '''새로운 인증 토큰 발급''' * '''올바른 API 키 사용''' == 403 Forbidden == === 의미 === * '''정의''': 클라이언트가 인증되었으나, 요청한 리소스에 대한 권한(Authorization)이 없음을 나타낸다. * '''핵심 특징''': 서버가 요청을 이해했으나, 클라이언트의 권한 부족으로 거부함을 의미한다. === 사용 예시 === * '''관리자 전용 페이지에 일반 사용자가 접근''' * '''다른 사용자의 개인 정보 접근 시도''' * '''IP 기반 접근 제한''' === 구현 특징 === * '''응답 예시''': <pre> HTTP/1.1 403 Forbidden Content-Type: application/json { "error": "insufficient_permissions", "message": "You don't have permission to access this resource" } </pre> === 해결 방법 === * '''필요한 권한 획득''' * '''적절한 역할/그룹 할당 요청''' * '''관리자에게 접근 권한 요청''' == 주요 차이점 == === 인증과 인가 === * '''401 (인증 문제)''' ** 신원 확인이 필요한 상태 ** "당신이 누구인지 모릅니다" ** 로그인이나 인증 정보 제공으로 해결 * '''403 (인가 문제)''' ** 신원은 확인되었으나 권한이 부족한 상태 ** "당신이 누군지 알지만, 접근 권한이 없습니다" ** 적절한 권한을 부여받아야 해결 === 보안 구현 시 고려사항 === ==== 401 구현 시 ==== * '''인증 메커니즘 명시''': WWW-Authenticate 헤더를 통해 지원하는 인증 방식 안내 * '''재시도 가능성''': 클라이언트가 다시 인증을 시도할 수 있도록 정보 제공 * '''보안 취약점 예방''': 너무 자세한 오류 메시지는 피해야 함 ==== 403 구현 시 ==== * '''최소 권한 원칙''': 필요한 최소한의 권한만 부여 * '''명확한 메시지''': 왜 접근이 거부되었는지 설명 (단, 보안을 저해하지 않는 선에서) * '''로깅''': 권한 없는 접근 시도에 대한 기록 유지 == 모범 사례 == === 올바른 상태 코드 선택 === * '''인증되지 않은 요청''' → 401 사용 * '''인증된 사용자의 권한 부족''' → 403 사용 * '''리소스 존재 여부 숨김 필요''' → 404 고려 === 보안 관련 주의사항 === * '''정보 노출 최소화''': 오류 메시지에 민감한 정보 포함 금지 * '''일관된 응답''': 동일한 상황에 대해 일관된 상태 코드 사용 * '''적절한 로깅''': 보안 감사를 위한 접근 거부 로그 유지 <!-- 분류 --> [[분류:HTTP]] [[분류:웹 보안]] [[분류:인증]] [[분류:인가]] [[분류:HTTP 상태 코드]] 편집 요약 가온 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 가온 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요! 취소 편집 도움말 (새 창에서 열림)