티스토리 뷰

Backend

web. Cookie와 Session

out of coding 2019. 6. 22. 12:21

일단 이 두가지가 필요한 이유에 대해서 부터 이야기를 해보도록 하겠습니다.

 

HTTP 프로토콜은 연결이 항상 이루어져있지 않은 통신입니다. 그렇다 보니 통신이 끝나게 되면 상태 정보를 유지 하지 않게 되어 있고요.

이렇게 되면 연결을 계속 유지하지 않기 때문에 리소스 낭비가 줄어드는 커다란 장점을 가지게 됩니다.

하지만 통신을 할때마다 새로 연결을 하여야 하고 지금 접속하는 주최가 이전에 접속을 하여서 통신을 하던것인지 알수가 없습니다. 그렇다 보니 요청할때마다 인증을 해야 한다는 단점이 발생하게 됩니다.

 

그래서 이러한 상태를 유지하여야 하는데요. 이것을 위해서 쿠키와 세션을 이용하게 됩니다.

 

쿠키 (Cookie)

1. 쿠키란?

  • 클라이언트 로컬에 저장되는 키와 값이 들어있는 파일
  • 이름, 값, 유호 시간, 경로 등을 포함하고 있음.
  • 클라이언트의 상태 정보를 브라우저에 저장하여 참조합니다.

2. 쿠키의 구성요소

  • 쿠키의 이름(name)
  • 쿠키의 값(value)
  • 쿠키의 만료시간(Expires)
  • 쿠키를 전송할 도메인 이름(Domain)
  • 쿠키를 전송할 경로(Path)
  • 보안 연결 여부(Secure)
  • HttpOnly 여부(HttpOnly)

3. 동작 방식

  1. 웹브라우저 혹은 클라이언트가 서버에 요청
  2. 상태를 유지하고 싶은 값을 쿠키(cookie)로 생성
  3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 쿠키를 포함해서 전송. (원하는 key로 값을 전송)
  4. 전달받은 쿠키를 받은쪽에서 관리하고 있다가 다음 Http 요청시에 쿠키를 HTTP 헤더에 넣어서 전송합니다.
  5. 클라이언트에서 값을 주었으니 이것을 서버에서 받아서 처리

세션 (Session)

1. 세션이란?

  • 일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술
  • 즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태

2. 동작 방식

  1. 웹브라우저가 서버에 요청
  2. 서버가 해당 웹브라우저(클라이언트)에 유일한 ID(Session ID)를 부여함
  3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함해서 전송
    쿠키에 Session ID를 JSESSIONID 라는 이름으로 저장
  4. 웹브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 전송
  5. 서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답

잠시만...

위에 적혀 있는것처럼 동작을 한다면 동일한거 아닌가요? 그렇지는 않습니다.

차이점

  • 저장 위치
    • 쿠키 : 클라이언트
    • 세션 : 서버
  • 보안
    • 쿠키 : 클라이언트에 저장되므로 보안에 취약하다.
    • 세션 : 쿠키를 이용해 Session ID만 저장하고 이 값으로 구분해서 서버에서 처리하므로 비교적 보안성이 좋다.
  • 라이프사이클
    • 쿠키 : 만료시간에 따라 브라우저를 종료해도 계속해서 남아 있을 수 있다.
    • 세션 : 만료시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
  • 속도
    • 쿠키 : 클라이언트에 저장되어서 서버에 요청 시 빠르다.
    • 세션 : 실제 저장된 정보가 서버에 있으므로 서버의 처리가 필요해 쿠키보다 느리다.

쿠키는 모든 정보를 클라이언트에 저장하고 세션은 세션ID만 저장하고 서버에서 처리하게 됩니다.

'Backend' 카테고리의 다른 글

Java Web Application 배포 패키징 3가지 유형  (0) 2020.02.21
VIP란? Very Important Person아님... Virtual IP임!!  (2) 2019.11.19
web. HTTP(S)란 무엇인가?  (0) 2019.06.22
Referer...  (0) 2018.04.18
[Web]welcome-file  (0) 2015.01.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함