Seungwoo Hong
Front-end developer
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
# TERMINAL
# TERMINAL
# TERMINAL
웹 서버에서 만들어 클라이언트에 저장 되는 데이터 조각
# TERMINAL
- Client 컴퓨터에 저장 되는 작은 데이터로 최대 4KB가 저장된다.
- 웹페이지 방문 시 주로 생성된다.
- 사용자의 Http 요청이 있을 때마다 요청에 담기게 된다.
# TERMINAL
임시적인 쿠키라고 할 수 있다. Expire time이 없으며, 브라우저가 닫히면 자동 삭제 된다.
Persistent Cookie
Session Cookie
Expire time을 가지고 있으며, 만료 시 삭제된다. 디스크에 저장되기 때문에 브라우저가 꺼지거나 컴퓨터가 꺼져도 삭제되지 않는다.
# TERMINAL
동일한 도메인, 서브도메인에 종속된 쿠키
Third partyCookie
First party Cookie
다른 도메인(외부 사이트)에서 발행된 쿠키
# TERMINAL
- 페이지 방문 여부 체크
- 정보 개인화
- 팝업
# TERMINAL
- HTTP 요청 시 매번 헤더를 담겨 가기 때문에 보안에 취약하다. (XSS, CSRF)
- 저장 공간이 작다 (4KB)
- 클라이언트에 저장되기 때문에 쉽게 변경이 가능
# TERMINAL
우리가 일반적으로 사용하는 쿠키의 스펙은 Version0 쿠키다.
Version0 쿠키는 Set-Cookie 헤더에 담긴다.
# TERMINAL
# TERMINAL
# TERMINAL
- 세션은 클라이언트와 연결 상태의 한 단위를 말한다.
- Session 저장소
세션은 사용자를 식별하거나 인증하기 위해 서버에 정보를 저장한다. 이 데이터를 세션이라 부른다.
- 세션은 사용자가 브라우저를 종료하거나 일정 시간동안 사용하지 않을 경우, 삭제된다.
# TERMINAL
우리가 일반적으로 사용하는 HTTP 프로토콜은 기본적으로 Stateless다.
Stateless라는 것은 요청마다 상태를 가지고 있지 않는다는 뜻이다.
따라서 사용자를 식별하거나 로그인 여부를 확인하기가 불가능하다.
세션에 사용자를 식별할 수 있는 정보를 저장
# TERMINAL
# TERMINAL
- 데이터가 서버에 저장되기 때문에 접속자가 많아 지면 자원이 낭비된다.
- 서버 요청 시마다 확인하는 절차가 필요하기 때문에 부하가 생길 수 있다.
- 인증을 서버에 의존하기 때문에 서버 확장에 문제가 될 수 있다.(다른 서버는 세션을 가지고 있지 않기 때문에)
# TERMINAL
# TERMINAL
- 쿠키는 Http 요청 시 헤더에 담겨 함께 간다. 그래서 보안에 매우 취약하고 네트워크 리소스가 사용된다.
- 세션은 서버에 정보가 저장되기 때문에 서버에 부담이 될 수 있다.
- 시대가 발전함에 따라 일시적으로 저장해야 하는 데이터의 양도 많아짐
# TERMINAL
- 5MB ~ 10MB 저장 가능하다.(브라우저마다 다름)
- 도메인별로 종속되어 있어 동일한 도메인에서만 엑세스 가능
- Key-Value 형태로 데이터를 저장하며, 문자열로 저장됨
- 만료 시간 설정을 할 수 없다.
- HTTP 요청 헤더를 담기지 않는다.(CSRF로 부터 안전)
# TERMINAL
# TERMINAL
Local storage
- 명시적으로 삭제하지 않는 이상, 영구적으로 데이터가 저장된다.
- 데이터가 도메인별로 공유되어 여러 페이지, 탭에서 공유가 된다.
Session storage
- 세션이 종료되면 자동으로 삭제된다.(탭 종료)
- 세션 스토리지의 단위는 탭이다.
- 로컬 스토리지와는 다르게 탭별로 스토리지가 존재하여 공유 X
# TERMINAL
스크립트를 쿼리나 게시물등을 통해 웹 서비스에 주입하여 자동적으로 실행되도록 하는 공격
# TERMINAL
게시물 작성등을 통해 스크립트를 영구적으로 디비에 저장하도록 하여 지속적으로 스크립트가 실행되도록 하는 공격 방법
# TERMINAL
게시물 작성등을 통해 스크립트를 영구적으로 디비에 저장하도록 하여 지속적으로 스크립트가 실행되도록 하는 공격 방법
# TERMINAL
게시물 작성등을 통해 스크립트를 영구적으로 디비에 저장하도록 하여 지속적으로 스크립트가 실행되도록 하는 공격 방법
# TERMINAL
Cookie가 자동으로 함께 담겨 요청된다는 점을 이용하여 form이나 link등을 통해 사용자가 의도하지 않은 요청을 보내는 공격
- 링크 또한 페이지에 대한 데이터를 요청하는 것이다. 이를 이용한다.
- Cookie의 특성 상 Http 요청 시마다 토큰이나 session-id가 자동으로 헤더에 담겨 가는 것을 악이용
# TERMINAL
By Seungwoo Hong