HTTP 완벽 가이드
11-12장
2024.11.26
작성자 김보선
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
목차
11장
클라이언트 식별과 쿠키
12장
기본 인증
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
클라이언트 식별과 쿠키
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
개별접촉
개별 접촉이란??
웹 서버는 요청을 보낸 사용자를 식별하거나
방문자가 보낸 연속적인 요청을 추적하기 위해 약간의 정보를 이용하는 것을 의미
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
개별접촉
종류 | 설명 |
개별인사 | 사용자에게 특화된 환영 메시지나 페이지 내용을 만든다. |
사용자 추천 | 고객의 흥미가 무엇인지 파악하고 고객에게 맞춤으로 제품을 추천한다. |
저장된 사용자 정보 | 온라인 쇼핑이 고객을 식별하고 나면 쇼핑을 더 편리하게 하도록 사용자 정보를 사용한다.(ex - 고객은 주소와 신용카드 정보를 매번 입력하는 것을 싫어함..) |
세션 추적 | 많은 웹사이트에서 사용자가 사이트와 상호작용 할 수 있게 남긴 사용자 정보를 유지하기 위한 HTTP 트랜잭션을 식별할 방법이 필요하다(ex - 다시보지않기) |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
HTTP 헤더
HTTP 헤더란??
요청이나 응답에 관해서 부가적인 정보를 전달하는 HTTP 요청 또는 응답 필드
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
종류 | 설명 |
From | 사용자의 이메일 주소 |
User-Agent | 사용자의 브라우저 |
Referer | 사용자가 현재 링크를 타고 온 근원 페이지 |
Authorization | 사용자 이름과 비밀번호 |
Client-ip | 클라이언트의 IP주소 |
X-Forwarded-For | 클라이언트의 IP주소(원 IP주소를 식별하는 사실상의 표준 헤더) ☞ 클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치면, 서버 접근 로그에는 프록시나 로드 밸런서의 IP 주소만을 담고 있다. 클라이언트의 원 IP 주소를 보기위해 X-Forwarded-For 요청 헤더가 사용 |
Cookie | 서버가 생성한 ID 라벨 |
11장
HTTP 헤더
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
클라이언트 IP 주소
클라이언트 IP 주소란??
네트워크에 존재하는 컴퓨터를 유일하게 식별하는 숫자
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
클라이언트 IP 주소
초기에는 사용자 식별에 클라이언트의 IP 주소를 사용하려고 하였다.
확실한 IP 주소를 가지고 있고, 그 주소가 절대 바뀌지 않고, 웹 서버가 요청마다 클라이언트의 IP를 알 수 있다면, 문제가 되지 않는다.
단, 클라이언트 IP로 사용자를 식별 할경우 단점 발생!
1. 만약 여러 사용자가 같은 컴퓨터를 사용한다면 그들을 식별할 수 없다 |
2. 인터넷 서비스 제공자(ISP)는 사용자가 로그인하면 동적으로 IP 주소를 할당하기 때문에, 사용자는 매번 다른 주소를 받아, 웹 서버는 사용자를 IP 주소로 식별 할 수 없다 |
3. 사용자들은 인터넷 사용시에 네트워크 주소 변환(Network Address Translation) 방화벽을 사용하는데, 방화벽은 사용자의 실제 IP를 숨기고 방화벽 IP 주소로 변환하므로 식별이 어렵다 |
4. HTTP 프락시와 게이트웨이는 원 서버에 새로운 TCP 연결을 한다. 웹 서버는 클라이언트의 IP 주소 대신 프락시 서버의 IP 주소를 본다 ☞ 원 서버는 클라이언트와 직접 통신하지 않으므로, 클라이언트의 IP를 바로 알 수 없고 대신 프락시 서버의 IP를 보게되면서 클라이언트를 정확히 식별하는 데 어려움이 발생 |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
사용자 로그인
사용자 로그인 이란?
운영체제나 웹사이트 등에서 자신의 계정을 이용하기 위해
사용자 인증을 하여 자신의 계정으로 접속하는 것을 의미
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
사용자 로그인
HTTP는 WWW-Authenticate와 Authorization 헤더를 사용해 웹 사이트에 사용자 이름을 전달하는 자체적인 체계를 가지고 있다.
1. 서버에서, 사용자가 사이트에 접근하기 전에 로그인을 시키고자 한다면, HTTP 401 ?Login Required 응답 코드를 브라우저에 보낼 수 있다. |
2. 브라우저는 로그인 화면을 보여주고, 다음 요청부터 Authorization 헤더에 정보를 기술하여 보낸다. |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
뚱뚱한 URL
뚱뚱한 URL??
사용자의 상태정보(행위, 정보값 등)를 포함하고 있는 URL
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
뚱뚱한 URL
웹 사이트는 사용자의 URL마다 버전을 기술하여 사용자를 식별하고 추적하기도 한다.
웹 서버는 URL에 있는 상태 정보를 유지하는 하이퍼링크를 동적으로 생성한다.
뚱뚱한 URL의 문제점은?
1. 브라우저 보이는 URL이 새로운 사용자들에게는 혼란을 준다. |
2. URL은 특정 사용자와 세션에 대한 상태 정보를 포함하므로, 해당 주소를 공유하게 된다면 개인정보를 공유하게 되는 것이다. |
3. URL로 만드는 것은 URL이 달라지기 때문에 기존 캐시에 접근할 수 없다는 것을 의미한다. |
4. 뚱뚱한 URL에 해당하는 HTML 페이지를 다시 그려야한다. |
5. 사용자가 특정 뚱뚱한 URL을 북마킹하지 않는 이상, 로그아웃하면 모든 정보를 잃는다. |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키
쿠키란?
사용자를 식별하고 세션을 유지하는 방식 중에서 가장 널리 사용되는 방식이다.
쿠키는 매우 중요한 웹 기술이며, 새로운 HTTP 헤더를 정의한다.
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 쿠키의 타입
세션 쿠키는 사용자가 브라우저를 닫으면 삭제된다.
지속 쿠키는 디스크에 저장되어,
브라우저를 닫거나
컴퓨터를 재시작 하더라도
남아있다.
세션쿠키
(Session Cookie)
지속 쿠키
(Persistent Cookie)
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 쿠키는 어떻게 동작하는가
웹 서버
사용자
임의의 이름 = 값
쿠키는 서버가 사용자에게 “안녕, 내 이름은…”라고 적어서 붙이는 스티커와 같다.
웹 서버는 사용자를 식별하기 위해 임의의 이름=값 형태로 쿠키에 할당한다.
할당된 리스트는 Set-Cookie 또는 Set-Cookie2 같은 HTTP 응답 헤더에 기술되어 사용자에게 전달한다.
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 쿠키상자: 클라이언트 측 상태
쿠키는 브라우저가 서버 관련 정보를 저장하고, 사용자가 해당 서버에 접근할 때마다
그 정보를 함께 전송하는 것이다.
브라우저는 쿠키 정보를 저장할 책임이 있는데, 이 시스템을 클라이언트 측 상태라고 한다
웹 서버
브라우저
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 사이트마다 각기 다른 쿠키들
브라우저는 쿠키 전부를 모든 사이에 보내지 않고, 보통 두세 개의 쿠키만을 보낸다.
이유는??
1. 쿠키를 모두 전달하면 성능이 크게 저하된다. |
2. 대부분 서버에 특화된 이름/값 쌍을 이루므로, 대부분 사이트에서는 인식하지 않는 무의미한 값이다. |
3. 특정 사이트에서 제공한 정보를 신뢰하지 않는 사이트에 가지고 갈 수 있으므로 잠재적인 개인정보 문제를 일으킬 수 있다. |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 쿠키의 구성요소
Ex) Set-Cookie: name=value [;expires=date] [;path=path] [;domain=domain] [;secure]�Cookie: name1=value1 [;name2=value2]…
<주요 변경사항>
1. 쿠키 마다 그 목적을 설명하는 설명문이 있다.
2. 쿠키의 생명주기를 결정할 수 있다(Max-Age)
3. URL의 포트번호로도 쿠키를 제어할 수 있다.
4. 브라우저가 닫히면 쿠키를 강제로 삭제할 수 있다.
Version 0
(넷스케이프 쿠키)
Version 1
(RFC 2965 쿠키)
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 쿠키와 세션 추적
☞ 쿠키는 웹 사이트에 수차례 트랜잭션을 만들어내는 사용자를 추적하는 데 사용(하단 예시 참조)
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
11장
쿠키 – 쿠키와 캐싱
쿠키 트랜잭션과 관련된 문서를 캐싱하는 것은 주의해야 한다.
이전 사용자의 쿠키가 다른 사용자에게 할당되어 누군가의 개인정보가 유출될 수 있다.
캐시를 다루는 기본원칙을 지키자!!
1. 캐시 되지 말아야 할 문서가 있다면 표시해라 |
2. Set-Cookie 헤더를 캐시 하는 것에 유의하라 |
3. Cookie 헤더를 가지고 있는 요청을 주의하라 |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
12장
기본인증
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
12장
인증(HTTP의 인증요구 / 응답프레임워크)
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
12장
인증(인증 프로토콜과 헤더)
단계 | 헤더 | 설명 | 메서드 / 상태 |
요청 | | 첫 번째 요청에는 인증 정보가 없다 | GET |
인증 요구 | WWW-Authenticate GET | 서버는 사용자에게 사용자 이름과 비밀번호를 제공하라는 의미로 401 상태 정보와 함께 요청을 반려한다. | 401 Unauthorized |
인증 | Authorization | 클라이언트는 인증 알고리즘과 사용자 이름,비밀번호를 기술한 Authorization 헤더를 보낸다. | GET |
성공 | Authentication-Info | 인증 정보가 정확하면, 서버는 문서와 함께 응답한다. | 200 OK |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
12장
기본인증
기본인증이란?
HTTP 기본 인증은 서버가 클라이언트에서 인증 확인 정보(사용자 ID 및 비밀번호)를
요청할 수 있는 단순 인증 확인 및 응답 메커니즘
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
12장
기본인증 – 요청의 상세방법
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
12장
기본인증 – 보안 결함
HTTP 기본 인증 절차를 보면 편리하지만, 안심할 수 없다.
누군가 패킷을 가로채서 Base64 Decoding을 실시하면…?? 🡺 바로 개인정보유출….
기본 인증 잘 알고 사용하자!!
1. HTTP 트랜잭션을 SSL 암호화 채널을 통해 보내거나, 보안이 더 강화된 다이제스트 인증 프로토콜을 사용 ☞ 다이제스트 인증은 기본인증처럼 통째로 인코딩 된 값을 전송 하는 것이 아닌 , 요약된 정보 일부와 수시로 바뀌는 암호화 방식을 사용하여 웹 서버와 인증 처리(보안 강화 목적) |
2. 기본 인증은 재전송 공격을 예방하기 위한 어떤 일도 하지 않는다. |
3. 만일, 기본 인증을 요구하는 서버가 가짜 서버라면? -> 큰일난다 정말.. |
ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Q&A
ⓒSaebyeol Yu. Saebyeol’s PowerPoint