Cookie

By Adien @BOLD9

# TERMINAL

bold9/honground/cookie $

# TERMINAL

bold9/honground/cookie $ cat index.txt

# TERMINAL

- Cookie vs session

- Web storage

- Security

- Cookie in Chrome

bold9/honground/cookie $ cat index.txt

bold9/honground/cookie $

# TERMINAL

bold9/honground/cookie $ sh present.sh

# TERMINAL

Cookie VS Session

# TERMINAL

Cookie VS Session

# TERMINAL

:Cookie

Cookie VS Session

:Cookie

# TERMINAL

웹 서버에서 만들어 클라이언트에 저장 되는 데이터 조각

Cookie VS Session

:Cookie - 특징

# TERMINAL

- Client 컴퓨터에 저장 되는 작은 데이터로 최대 4KB가 저장된다.

- 웹페이지 방문 시 주로 생성된다.

- 사용자의 Http 요청이 있을 때마다 요청에 담기게 된다.

Cookie VS Session

:Cookie - 2가지 유형

# TERMINAL

임시적인 쿠키라고 할 수 있다. Expire time이 없으며, 브라우저가 닫히면 자동 삭제 된다.

Persistent Cookie

Session Cookie

Expire time을 가지고 있으며, 만료 시 삭제된다. 디스크에 저장되기 때문에 브라우저가 꺼지거나 컴퓨터가 꺼져도 삭제되지 않는다.

Cookie VS Session

:Cookie - 분류

# TERMINAL

동일한 도메인, 서브도메인에 종속된 쿠키

Third partyCookie

First party Cookie

다른 도메인(외부 사이트)에서 발행된 쿠키

Cookie VS Session

:Cookie - 활용

# TERMINAL

- 페이지 방문 여부 체크

- 정보 개인화

- 팝업

Cookie VS Session

:Cookie - 단점

# TERMINAL

- HTTP 요청 시 매번 헤더를 담겨 가기 때문에 보안에 취약하다. (XSS, CSRF)

- 저장 공간이 작다 (4KB)

- 클라이언트에 저장되기 때문에 쉽게 변경이 가능

Cookie VS Session

:Cookie - 속성

# TERMINAL

우리가 일반적으로 사용하는 쿠키의 스펙은 Version0 쿠키다.

Version0 쿠키는 Set-Cookie 헤더에 담긴다.

Cookie VS Session

:Cookie - 속성

# TERMINAL

Cookie VS Session

# TERMINAL

:Session

Cookie VS Session

:Session

# TERMINAL

- 세션은 클라이언트와 연결 상태의 한 단위를 말한다. 

- Session 저장소

세션은 사용자를 식별하거나 인증하기 위해 서버에 정보를 저장한다. 이 데이터를 세션이라 부른다.

- 세션은  사용자가 브라우저를 종료하거나 일정 시간동안 사용하지 않을 경우, 삭제된다.

Cookie VS Session

:Session - 사용하는 이유

# TERMINAL

우리가 일반적으로 사용하는 HTTP 프로토콜은 기본적으로 Stateless다.

 

Stateless라는 것은 요청마다 상태를 가지고 있지 않는다는 뜻이다.

 

따라서 사용자를 식별하거나 로그인 여부를 확인하기가 불가능하다.

 

세션에 사용자를 식별할 수 있는 정보를 저장

Cookie VS Session

:Session - 동작 원리

# TERMINAL

Cookie VS Session

:Session - 단점

# TERMINAL

- 데이터가 서버에 저장되기 때문에 접속자가 많아 지면 자원이 낭비된다.

- 서버 요청 시마다 확인하는 절차가 필요하기 때문에 부하가 생길 수 있다.

- 인증을 서버에 의존하기 때문에 서버 확장에 문제가 될 수 있다.(다른 서버는 세션을 가지고 있지 않기 때문에)

Web Storage

# TERMINAL

Web storage

:탄생 배경

# TERMINAL

- 쿠키는 Http 요청 시 헤더에 담겨 함께 간다. 그래서 보안에 매우 취약하고 네트워크 리소스가 사용된다.

- 세션은 서버에 정보가 저장되기 때문에 서버에 부담이 될 수 있다.

- 시대가 발전함에 따라 일시적으로 저장해야 하는 데이터의 양도 많아짐

Web storage

:특징

# TERMINAL

- 5MB ~ 10MB 저장 가능하다.(브라우저마다 다름)

- 도메인별로 종속되어 있어 동일한 도메인에서만 엑세스 가능

- Key-Value 형태로 데이터를 저장하며, 문자열로 저장됨

- 만료 시간 설정을 할 수 없다.

- HTTP 요청 헤더를 담기지 않는다.(CSRF로 부터 안전)

Web Storage

# TERMINAL

:Local storage vs Session storage

Web storage

Local stroage vs Session storage

# TERMINAL

Local storage

- 명시적으로 삭제하지 않는 이상, 영구적으로 데이터가 저장된다.

- 데이터가 도메인별로 공유되어 여러 페이지, 탭에서 공유가 된다.

Session storage

- 세션이 종료되면 자동으로 삭제된다.(탭 종료)

- 세션 스토리지의 단위는 탭이다.

- 로컬 스토리지와는 다르게 탭별로 스토리지가 존재하여 공유 X

Web security

:XSS

# TERMINAL

Cross-site scripting

스크립트를 쿼리나 게시물등을 통해 웹 서비스에 주입하여 자동적으로 실행되도록 하는 공격

  • Stored XSS
  • Reflected XSS
  • DOM XSS

Web security

:XSS

# TERMINAL

Stored XSS

게시물 작성등을 통해 스크립트를 영구적으로 디비에 저장하도록 하여 지속적으로 스크립트가 실행되도록 하는 공격 방법

Web security

:XSS

# TERMINAL

Reflected XSS

게시물 작성등을 통해 스크립트를 영구적으로 디비에 저장하도록 하여 지속적으로 스크립트가 실행되도록 하는 공격 방법

Web security

:XSS

# TERMINAL

Reflected XSS

게시물 작성등을 통해 스크립트를 영구적으로 디비에 저장하도록 하여 지속적으로 스크립트가 실행되도록 하는 공격 방법

# TERMINAL

Web security

:CSRF

Cross Site Request Forgery

Cookie가 자동으로 함께 담겨 요청된다는 점을 이용하여 form이나 link등을 통해 사용자가 의도하지 않은 요청을 보내는 공격

 

- 링크 또한 페이지에 대한 데이터를 요청하는 것이다. 이를 이용한다.

- Cookie의 특성 상 Http 요청 시마다 토큰이나 session-id가 자동으로 헤더에 담겨 가는 것을 악이용

# TERMINAL

Web security

:CSRF

Code

By Seungwoo Hong

Code

  • 19