서버와 클라이언트 간의 상태를 관리하는 쿠키는 웹 사이트에서 널리 사용되고 있음. 쿠키는 유저 식별과 상태 관리에 사용되고 있는 기능.
웹 사이트 유저의 상태를 관리하기 위해 웹 브라우저 경유로 유저의 컴퓨터 상에 일시적으로 데이터를 기록, 다음에 그 유저가 웹 사이트에 액세스 했을 때 지난 번 발행된 쿠키로 송신 받음.
쿠키가 호출되었을 때 쿠키의 유효기간과 송신지의 도메인, 경로, 프로토콜 등을 체크하는 것이 가능. 적절하게 발행된 쿠키는 다른 웹 사이트와 공격자의 공격에 의해 데이터가 도난 당하는 일이 없음.
헤더 필드 명 | 설명 | 헤더 종별 |
---|---|---|
Set-Cookie | 상태 관리 개시를 위한 쿠키 정보 | 리스폰스 |
Cookie | 서버에서 수신한 쿠키 정보 | 리퀘스트 |
Set-Cookie: status-enable; expires=Tue, 05 Jul 2011 07:26:31 GMT;=>path=/;domain=.hack.jp;
속성 | 설명 |
---|---|
NAME=VALUE | 쿠키에 부여된 이름과 값(필수) |
Expires=DATE | 쿠키 유효 기간(지정되지 않은 경우는 브라우저를 닫을 때까지) |
Path=PATH | 쿠키 적용 대상이 되는 서버 상의 디렉토리(지정하지 않은 경우는 도큐먼트와 같은 디렉토리) |
Domain=도메인 명 | 쿠키 적용 대상이 되는 도메인 명(지정하지 않은 경우는 쿠키를 생성한 서버의 도메인) |
Secure | HTTPS로 통신하고 있는 경우에만 쿠키를 송신 |
HttpOnly | 쿠키를 JavaScript(자바스크립트)에서 액세스하지 못하도록 제한 |
Cookie: status=enable
Cookie 헤더 필드는 클라이언트가 HTTP의 상태 관리 지원을 원할 때 서버로부터 수신한 쿠키를 이후의 리퀘스트에 포함해서 전달.
쿠키를 여러 번 보내는 것 가능.
HTTP 헤더 필드는 독자적으로 확장할 수 있음.
X-Frame-Option: DENY
다른 웹 사이트의 프레임에서 표시를 제어하는 HTTP 리스폰스 헤더.
클릭 재킹(Click Jacking)이라는 공격을 막는 것이 목표.
X-XSS-Protection: 1
X-XSS-Protection 헤더 필드는 크로스 사이트 스크립팅(XSS) 대첵으로서 브라우저의 XSS 보호 기능을 제어하는 HTTP 리스폰스 헤더.
DNT: 1
DNT 헤더 필드는 Do Not Track(DNT)라는 뜻. 개인 정보 수집을 거부하는 의사를 나타내는 HTTP 리퀘스트 헤더. 타깃 광고 등에 이용되는 트래킹의 거부 의사를 나타내기 위한 방법 중 하나.
P3P: CP="CAO DSP LAW CURa ADMa DEVa TAla PSAa PSDa IVAa IVDa OUR BUS IND UNI COM NAV INT
웹 사이트 상의 프라이버시 정책에 P3P(The Platform for Privacy Preferences)를 사용하는 것. 프로그램이 읽을 수 있는 형태로 나타내기 위한 HTTP 리스폰스 헤더.
응용 계층(세션 계층과 표현 계층을 포함) | 애플리케이션 등에서 사용하는 데이터를 송수신하는 데 필요 |
전송 계층 | 목적지에 데이터를 정확하게 전달하는 데 필요 |
네트워크 계층 | 다른 네트워크에 있는 목적지에 데이터를 전달하는 데 필요 |
데이터 링크 계층 | 랜에서 데이터를 송수신하는 데 필요 |
물리 계층 | 데이터를 전기 신호로 변환하는 데 필요 |
컴퓨터에서 OSI 모델의 캡슐화 진행, 응용 계층에서부터 시작.
웹 브라우저에 URL을 입력하고 enter키를 누르면 캡슐화가 시작.
컴퓨터에서 웹 브라우저를 이용하여 웹 서버의 웹 사이트에 접속하기 위한 요청을 보낼 때 사용하는 것이 HTTP 프로토콜.
응용 계층에서 HTTP 메세지를 보내면 데이터가 전송 계층에 전달.
전송 계층에서는 TCP 헤더가 붙음. TCP 헤더는 어느 애플리케이션에 데이터를 보내야 하는지 식별하는 출발지 포트 번호와 목적지 포트 번호가 필요. 이 TCP 헤더를 가진 데이터 == 세그먼트
다음에는 데이터가 네트워크 계층으로 전달. IP 헤더가 붙고 출발지 컴퓨터와 목적지 서버의 위치가 추가. (출발지 IP 주소와 목적지 IP 주소) IP 헤더가 붙은 데이터 == IP 패킷.
그 다음에는 데이터 링크 계층으로 전달. 이더넷 헤더가 붙고 이더넷 헤더가 있는 데이터를 이더넷 프레임이라고 함.
물리 계층에서 전기 신호로 변환되어 네트워크로 전송.
스위치 A는 데이터 링크 계층에서 데이터를 전기 신호로 변환하여 라우터 A로 전송.
스위치 A --전기 신호 --> 라우터 A
스위치 A에서 데이터가 전기 신호로 변환되어 케이블을 통해 흘러가 라우터 A에 도착하면 라우터 A는 데이터 링크 계층에서 이더넷 프레
임의 목적지 MAC 주소와 자신의 MAC 주소를 비교.
이때 주소가 같으면 이더넷 헤더와 트레일러를 분리하는 역캡슐화를 진행. 다음으로 네트워크 계층에 전달하고 자신의 라우팅 테이블과 목적지 IP 주소를 비교.
라우터 A의 라우팅 테이블에서 목적지 IP 주소의 경로를 알면 라우팅 가능. 현재 IP 주소를 라우터의 외부 IP주소로 변경 후, 데이터 링크 계층으로 전달하여 라우터 B로 보내지도록 이더넷 헤더와 트레일러를 붙인 뒤 물리 계층에서 데이터를 전기 신호로 변환하여 네트워크로 전달.
라우터 A --전기 신호 --> 라우터 B.
라우터 B에 도착하면 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소 비교.
주소가 같으면 이더넷 헤더와 트레일러를 분리하는 역캡슐화 수행. 그 다음 네트워크 계층으로 전달되면 자신의 라우팅 테이블과 목적지 IP 주소 비교.
현재의 출발지 IP주소를 라우터 B의 내부 IP주소로 변경. 데이터 링크 계층에 전달하여 스위치에 전달되도록 이더넷 헤더와 트레일러(FCS)를 붙인 후 물리 계에서엣 데이터를 전기 신호로 변환하여 네트워크로 전달.
라우터 B --전기 신호 -->스위치 B
데이터 링크 계층에서 처리하고 웹 서버에 데이터를 전기 신호로 전달.
데이터 링크 계층에서 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소 비교. 주소가 같으면 이더넷 헤더와 트레일러를 분리하고 네트워크 계층에 전달.
네트워크 계층에서는 목적지 IP 주소와 웹 서버의 IP 주소가 같은지 확인. 주소가 같으면 IP 헤더를 분리하고 전송 계층에 전달.
전송 계층에서는 목적지 포트 번호를 확인. 어떤 애플리케이션으로 전달해야 하는지 판단하고 TCP 헤더를 분리하여 응용 계층에 전달.
웹 서버의 응용 계층에 도착.