본문 바로가기

백엔드/web

session

반응형

session 이란!?

클라이언트별 정보를 브라우저가 아닌 웹서버에 저장하는것

클라이언트의 정보를 웹브라우저에 저장하는 기술을 cookie 라고 함

django session은 쿠키에 session_id 만 저장하고 클라이언트의 연결성을 확보한뒤 session_id 통해 활동할 수 있음

HTTP PROTOCOL 의 특징

  1. 비연결 지향(connection-less)
    1. 클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊음
  2. 상태 정보 유지 안함(stateless)
    1. 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않음
  3. 쿠키와 세션의 필요성
    1. HTTP protocol은 위와 같은 특징으로 모든 요청 간 의존관계가 없음
    2. 즉, 현재 접속한 사용자가 이전에 접속한 사람인지 같은 사용자 인지 알길이없다는 거임
    3. 계속해서 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드는 것이 장점인데, 통신할때 마다 새로 연결해야하기 떄문에 클라이언트는 매 요청때 마다 인증을 해줘야하하는 번거로움이 있음
    4. 이전 요청과 현재 요청이 같은 사람의 요쳥인지 알기위해서는 상태를 유지해야 하는데
    5. HTTP protocol에서 상태를 유지하기 위한 기술로 쿠키와 세션이 있음

what is a cookie?

  1. 개념
    1. 클라이언트 로컬에 저장되는 키와 값이 들어있는 파일
    2. 이름, 값, 유효 시간, 경로 등을 포함하고 있음
    3. 클라이언트의 상태 정보를 브라우저에 저장하여 참조함
  2. 구성 요소
    1. 쿠키 이름(name)
    2. 쿠키 값(value)
    3. 쿠키 만료시간 (expires)
    4. 쿠키를 전송할 도메인 이름(Domain)
    5. 쿠키를 전송할 경로(path)
    6. 보안 연결 여부(secure)
    7. HttpOnly 여부
  3. 동작방식
    1.  

  1. 웹 브라우저가 서버에 요청
  2. 상태를유지하고 싶은 값을 쿠키(cookie)생성
  3. 서버가 응답할 때 HTTP 헤더(set-cookie)에 쿠키를 포함해서 전송
    1. set-cookie: id=doy
  4. 전달받은 쿠키는 웹 브라우저에 관리 하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송함
    1. Cookie: id=doy
  5. 어디에 사용할까?
    1. 로그인 아이디 비밀번호 저장할때
    2. 쇼핑몰 장바구니

 

what is a session?

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

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

 

 

세션도 쿠키를 사용하여 값을 주고받으면 클라이언트의 상태정보를 유지함

즉 상태정보를 유지하는 수단은 쿠키임

 

쿠키와 세션의 차이점

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