<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C%2F401%EA%B3%BC_403_%EC%B0%A8%EC%9D%B4</id>
	<title>HTTP 상태 코드/401과 403 차이 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C%2F401%EA%B3%BC_403_%EC%B0%A8%EC%9D%B4"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C/401%EA%B3%BC_403_%EC%B0%A8%EC%9D%B4&amp;action=history"/>
	<updated>2026-07-20T18:09:00Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C/401%EA%B3%BC_403_%EC%B0%A8%EC%9D%B4&amp;diff=107672&amp;oldid=prev</id>
		<title>Gaon12: 시작</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C/401%EA%B3%BC_403_%EC%B0%A8%EC%9D%B4&amp;diff=107672&amp;oldid=prev"/>
		<updated>2024-11-18T05:11:32Z</updated>

		<summary type="html">&lt;p&gt;시작&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 개요 ==&lt;br /&gt;
HTTP 401(Unauthorized)과 403(Forbidden) 상태 코드는 모두 클라이언트의 요청에 대한 접근 거부를 나타내는 4xx 오류 상태 코드이다. 그러나 두 상태 코드는 접근이 거부된 이유와 해결 방법에서 중요한 차이를 보인다. 이 문서에서는 두 상태 코드의 차이점과 각각의 적절한 사용 사례를 설명한다.&lt;br /&gt;
&lt;br /&gt;
== 401 Unauthorized ==&lt;br /&gt;
=== 의미 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;정의&amp;#039;&amp;#039;&amp;#039;: 요청한 리소스에 대한 인증(Authentication)이 필요함을 나타낸다.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;핵심 특징&amp;#039;&amp;#039;&amp;#039;: 클라이언트가 아직 인증되지 않았거나, 제공된 인증 정보가 유효하지 않음을 의미한다.&lt;br /&gt;
&lt;br /&gt;
=== 사용 예시 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;로그인이 필요한 API 엔드포인트 접근&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;만료된 인증 토큰 사용&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;잘못된 API 키 사용&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== 구현 특징 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;응답 헤더&amp;#039;&amp;#039;&amp;#039;: WWW-Authenticate 헤더를 포함해야 한다.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;예시 응답&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 401 Unauthorized&lt;br /&gt;
WWW-Authenticate: Basic realm=&amp;quot;Application&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 해결 방법 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;유효한 인증 정보 제공&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;새로운 인증 토큰 발급&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;올바른 API 키 사용&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== 403 Forbidden ==&lt;br /&gt;
=== 의미 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;정의&amp;#039;&amp;#039;&amp;#039;: 클라이언트가 인증되었으나, 요청한 리소스에 대한 권한(Authorization)이 없음을 나타낸다.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;핵심 특징&amp;#039;&amp;#039;&amp;#039;: 서버가 요청을 이해했으나, 클라이언트의 권한 부족으로 거부함을 의미한다.&lt;br /&gt;
&lt;br /&gt;
=== 사용 예시 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;관리자 전용 페이지에 일반 사용자가 접근&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;다른 사용자의 개인 정보 접근 시도&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IP 기반 접근 제한&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== 구현 특징 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;응답 예시&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 403 Forbidden&lt;br /&gt;
Content-Type: application/json&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: &amp;quot;insufficient_permissions&amp;quot;,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;You don&amp;#039;t have permission to access this resource&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 해결 방법 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;필요한 권한 획득&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;적절한 역할/그룹 할당 요청&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;관리자에게 접근 권한 요청&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== 주요 차이점 ==&lt;br /&gt;
=== 인증과 인가 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;401 (인증 문제)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** 신원 확인이 필요한 상태&lt;br /&gt;
** &amp;quot;당신이 누구인지 모릅니다&amp;quot;&lt;br /&gt;
** 로그인이나 인증 정보 제공으로 해결&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;403 (인가 문제)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** 신원은 확인되었으나 권한이 부족한 상태&lt;br /&gt;
** &amp;quot;당신이 누군지 알지만, 접근 권한이 없습니다&amp;quot;&lt;br /&gt;
** 적절한 권한을 부여받아야 해결&lt;br /&gt;
&lt;br /&gt;
=== 보안 구현 시 고려사항 ===&lt;br /&gt;
==== 401 구현 시 ====&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;인증 메커니즘 명시&amp;#039;&amp;#039;&amp;#039;: WWW-Authenticate 헤더를 통해 지원하는 인증 방식 안내&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;재시도 가능성&amp;#039;&amp;#039;&amp;#039;: 클라이언트가 다시 인증을 시도할 수 있도록 정보 제공&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;보안 취약점 예방&amp;#039;&amp;#039;&amp;#039;: 너무 자세한 오류 메시지는 피해야 함&lt;br /&gt;
&lt;br /&gt;
==== 403 구현 시 ====&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;최소 권한 원칙&amp;#039;&amp;#039;&amp;#039;: 필요한 최소한의 권한만 부여&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;명확한 메시지&amp;#039;&amp;#039;&amp;#039;: 왜 접근이 거부되었는지 설명 (단, 보안을 저해하지 않는 선에서)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;로깅&amp;#039;&amp;#039;&amp;#039;: 권한 없는 접근 시도에 대한 기록 유지&lt;br /&gt;
&lt;br /&gt;
== 모범 사례 ==&lt;br /&gt;
=== 올바른 상태 코드 선택 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;인증되지 않은 요청&amp;#039;&amp;#039;&amp;#039; → 401 사용&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;인증된 사용자의 권한 부족&amp;#039;&amp;#039;&amp;#039; → 403 사용&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;리소스 존재 여부 숨김 필요&amp;#039;&amp;#039;&amp;#039; → 404 고려&lt;br /&gt;
&lt;br /&gt;
=== 보안 관련 주의사항 ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;정보 노출 최소화&amp;#039;&amp;#039;&amp;#039;: 오류 메시지에 민감한 정보 포함 금지&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;일관된 응답&amp;#039;&amp;#039;&amp;#039;: 동일한 상황에 대해 일관된 상태 코드 사용&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;적절한 로깅&amp;#039;&amp;#039;&amp;#039;: 보안 감사를 위한 접근 거부 로그 유지&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 분류 --&amp;gt;&lt;br /&gt;
[[분류:HTTP]] [[분류:웹 보안]] [[분류:인증]] [[분류:인가]] [[분류:HTTP 상태 코드]]&lt;/div&gt;</summary>
		<author><name>Gaon12</name></author>
	</entry>
</feed>