SlideShare a Scribd company logo
1 of 23
Download to read offline
COOKIE vs SESSION
CSW W4
우리가 컨퍼런스에 갔을 때
예매 확인을 한 후 들여보내지만, 컨퍼런스장 안에 있는 사람들이 예매 확인이 됐는지 확인 불가 👎
참여자가 예매 확인이 됐다는 정보를 담은 확인용 이름표 부여! 👌
그러면 어떻게 하나요?
https://velog.io/@chelsea
https://velog.io/@chelsea
웹은 HTTP라는 프로토콜을 사용!
HTTP의 무상태성(Stateless)
상태가 없기 때문에 클라이언트의 정보를 기억할 수 없다!
✔ 로그인 정보

✔ 유저 아이디

✔ 유저 등급
기타 등등 클라이언트의 정보들을 기억하지 못해요!
$ %
SERVER CLIENT
당신이 누구신데요? 무슨 권한으로요?
!#$%^ 내용의 글을 게시하고 싶습니다
🤷
그러면 어떻게 하냐고요?
이건 어떨까요?
컨퍼런스처럼 클라이언트의 정보를 확인할 수 있는 확인증을 부여하는 거예요!
$ %
SERVER CLIENT
업로드하였습니다!
!#$%^ 내용의 글을 게시하고 싶습니다
확인증
“user_id”는 “abcd1234”이며

관리자 등급입니다



SERVER (인)
실제 웹에서는 두 가지 방법으로 확인증 역할을 수행합니다
COOKIE vs SESSION
둘이 무슨 차이를 가지고 있는지 알아볼까요?
CHAPTER 1. COOKIE
HTTP 쿠키 = 웹 쿠키 = 브라우저 쿠키
서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각
$ %
SERVER BROWSER
쿠키를 헤더에 담아서 응답
HTTP 요청
쿠키를 저장, 쿠키를 담아 HTTP 재요청
응답
쿠키의 특징
✔ 한 개에 4KB까지 저장 가능
✔ 최대 300개까지 저장 가능한 텍스트 파일
✔ 클라이언트에 저장됨
✔ 이름, 값, 만료 날짜, 경로 정보 포함
✔ 웹 브라우저가 종료되면 삭제되지만 만료 날짜를 정해 두면 만료일에 삭제
✔ 브라우저에 해당 서버의 쿠키 정보가 있으면 HTTP 요청에 쿠키를 무조건 실어 보냄
CHAPTER 2. SESSION
HTTP 세션
서버가 해당 서버에 접근한 클라이언트를 식별하는 방법
$ %
SERVER BROWSER
세션 ID 생성, 세션 쿠키를 담아 응답
세션 ID 없는 상태에서 HTTP 요청
세션 쿠키 저장
응답
저장된 세션 쿠키를 담아 HTTP 재요청
클라이언트 인증
세션의 특징
✔ 따로 용량의 제한이 없음 (서버의 능력에 따라 달라짐)
✔ 서버에 세션 객체를 생성하고 클라이언트마다 고유한 세션 ID를 부여함
✔ 쿠키를 사용하여 세션 ID 값을 클라이언트에 전송
✔ 웹 브라우저가 종료되면 세션 쿠키 삭제
여기서 잠깐,
HTTP 세션
서버가 해당 서버에 접근한 클라이언트를 식별하는 방법
$ %
SERVER BROWSER
세션 ID 생성, 세션 쿠키를 담아 응답
세션 ID 없는 상태에서 HTTP 요청
세션 쿠키 저장
응답
저장된 세션 쿠키를 담아 HTTP 재요청
클라이언트 인증
HTTP 세션
서버가 해당 서버에 접근한 클라이언트를 식별하는 방법
$ %
SERVER BROWSER
세션 ID 생성, 세션 쿠키를 담아 응답
세션 ID 없는 상태에서 HTTP 요청
세션 쿠키 저장
응답
저장된 세션 쿠키를 담아 HTTP 재요청
클라이언트 인증
세션은 쿠키를 이용한 하나의 ‘방법’
COOKIE
✔ 정보를 클라이언트에 저장 ✔ 정보를 서버에 저장
✔ 보안에 취약 ✔ 쿠키가 보안에 취약한 점을 보완
SESSION
✔ 장바구니 같은 보안이 중요하지 않은 정보 저장 ✔ 아이디, 비밀번호 같은 보안이 중요한 정보 저장

More Related Content

Similar to HTTP Cookie vs Session

Web App Security 2015.10
Web App Security 2015.10Web App Security 2015.10
Web App Security 2015.10Chanjin Park
 
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)Junghyun Park
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0Daum DNA
 
로그인은 어떻게 동작하나?
로그인은 어떻게 동작하나?로그인은 어떻게 동작하나?
로그인은 어떻게 동작하나?Heemin Kim
 
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API Gosu Ok
 

Similar to HTTP Cookie vs Session (6)

Web App Security 2015.10
Web App Security 2015.10Web App Security 2015.10
Web App Security 2015.10
 
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
루비온레일즈 API 서버 - 4) api 서버 인증 구현 (쿠키/세션/토큰)
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0
 
로그인은 어떻게 동작하나?
로그인은 어떻게 동작하나?로그인은 어떻게 동작하나?
로그인은 어떻게 동작하나?
 
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
 

HTTP Cookie vs Session

  • 2. 우리가 컨퍼런스에 갔을 때 예매 확인을 한 후 들여보내지만, 컨퍼런스장 안에 있는 사람들이 예매 확인이 됐는지 확인 불가 👎
  • 3. 참여자가 예매 확인이 됐다는 정보를 담은 확인용 이름표 부여! 👌 그러면 어떻게 하나요?
  • 6. HTTP의 무상태성(Stateless) 상태가 없기 때문에 클라이언트의 정보를 기억할 수 없다!
  • 7. ✔ 로그인 정보
 ✔ 유저 아이디
 ✔ 유저 등급 기타 등등 클라이언트의 정보들을 기억하지 못해요!
  • 8. $ % SERVER CLIENT 당신이 누구신데요? 무슨 권한으로요? !#$%^ 내용의 글을 게시하고 싶습니다
  • 10. 이건 어떨까요? 컨퍼런스처럼 클라이언트의 정보를 확인할 수 있는 확인증을 부여하는 거예요!
  • 11. $ % SERVER CLIENT 업로드하였습니다! !#$%^ 내용의 글을 게시하고 싶습니다 확인증 “user_id”는 “abcd1234”이며
 관리자 등급입니다
 
 SERVER (인)
  • 12. 실제 웹에서는 두 가지 방법으로 확인증 역할을 수행합니다
  • 13. COOKIE vs SESSION 둘이 무슨 차이를 가지고 있는지 알아볼까요?
  • 15. HTTP 쿠키 = 웹 쿠키 = 브라우저 쿠키 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각 $ % SERVER BROWSER 쿠키를 헤더에 담아서 응답 HTTP 요청 쿠키를 저장, 쿠키를 담아 HTTP 재요청 응답
  • 16. 쿠키의 특징 ✔ 한 개에 4KB까지 저장 가능 ✔ 최대 300개까지 저장 가능한 텍스트 파일 ✔ 클라이언트에 저장됨 ✔ 이름, 값, 만료 날짜, 경로 정보 포함 ✔ 웹 브라우저가 종료되면 삭제되지만 만료 날짜를 정해 두면 만료일에 삭제 ✔ 브라우저에 해당 서버의 쿠키 정보가 있으면 HTTP 요청에 쿠키를 무조건 실어 보냄
  • 18. HTTP 세션 서버가 해당 서버에 접근한 클라이언트를 식별하는 방법 $ % SERVER BROWSER 세션 ID 생성, 세션 쿠키를 담아 응답 세션 ID 없는 상태에서 HTTP 요청 세션 쿠키 저장 응답 저장된 세션 쿠키를 담아 HTTP 재요청 클라이언트 인증
  • 19. 세션의 특징 ✔ 따로 용량의 제한이 없음 (서버의 능력에 따라 달라짐) ✔ 서버에 세션 객체를 생성하고 클라이언트마다 고유한 세션 ID를 부여함 ✔ 쿠키를 사용하여 세션 ID 값을 클라이언트에 전송 ✔ 웹 브라우저가 종료되면 세션 쿠키 삭제
  • 21. HTTP 세션 서버가 해당 서버에 접근한 클라이언트를 식별하는 방법 $ % SERVER BROWSER 세션 ID 생성, 세션 쿠키를 담아 응답 세션 ID 없는 상태에서 HTTP 요청 세션 쿠키 저장 응답 저장된 세션 쿠키를 담아 HTTP 재요청 클라이언트 인증
  • 22. HTTP 세션 서버가 해당 서버에 접근한 클라이언트를 식별하는 방법 $ % SERVER BROWSER 세션 ID 생성, 세션 쿠키를 담아 응답 세션 ID 없는 상태에서 HTTP 요청 세션 쿠키 저장 응답 저장된 세션 쿠키를 담아 HTTP 재요청 클라이언트 인증 세션은 쿠키를 이용한 하나의 ‘방법’
  • 23. COOKIE ✔ 정보를 클라이언트에 저장 ✔ 정보를 서버에 저장 ✔ 보안에 취약 ✔ 쿠키가 보안에 취약한 점을 보완 SESSION ✔ 장바구니 같은 보안이 중요하지 않은 정보 저장 ✔ 아이디, 비밀번호 같은 보안이 중요한 정보 저장