본문 바로가기
html, javacript

[HTML] 쿠키와 세션

by 바디스 2020. 7. 4.

쿠키와 세션을 사용하는 이유

HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용된다.

 

  • Connectionless 프로토콜 (비연결지향)

    클라이언트가 서버에 요청(Request)을 했을 때,
    그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.

     

     

    HTTP 1.1 버전에서 연결을 유지하고, 재활용 하는 기능이 Default 로 추가되었다.
    (keep-alive 값으로 변경 가능)

  • Stateless 프로토콜 (상태정보 유지 안함)

    클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다.

    클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도,
    두번째 통신에서 이전 데이터를 유지하지 않는다.

 

쿠키(Cookie)

 

  • 클라이언트 사용자가 웹 서버에 접속하여 로그인 하였을 때 클라이언트 컴퓨터에 저장되는 접속과 관련된 데이터
  • 로그인 한 다음 사이트의 어떠한 페이지로 이동하여도 로그인 상태가 유지
  • 사이트의 어떠한 페이지에서도 로그인된 상태와 로그인된 아이디 등을 이용가능
  • 만약 쿠기라는 개념이 없다면 로그인 시 로그인 상태와 로그인 아이디를 DB에 써 넣어야 함

브라우저에서 페이지를 처음으로 열람했을 때, 웹 서버에서 송신된 응답에 더해 쿠키정보가 할당되어 있으면 브라우저는 이 정보를 텍스트 파일로 저장. 이 페이지를 두번째 열람 시, 브라우저는열람 중인 사이트와 관련된 쿠키를 요청헤더에 포함하여 웹 서버에 전송 

즉, 쿠키는 사용자측에 대한정보를 보관해두었다가 웹 서버의 요청에 의해정보를 원하는 순간 사용할 수 있도록하는 것

 

 

세션(Sesstion)

 

  • 프로세스들 사이에서 통신을 하기 위해 메시지 교화을 통해 서로를 인식한 이후부터 통신을 마칠 때까지의 기간을 의미
  • 쿠키가 로그인 정보를 클라이언트 컴퓨터에 저장하는데 반하여 세션에서는 보안상 로그인 정보를 서버에 저장
  • PHP4에서 추가 되었는데 웹 사이트에 연속적으로 접속할 때 이전의 접속 정보를 이용할 수 있는 방법을 제공
  • 서버에서 세션 아이디(Session id)라고 부르는 유일한 아이디를 부여하여 서버의 특정 디렉토리에 저장
  • 세션 아이디는 또한 클라이언트 컴퓨터에 저장되거나 URL를 통하여 클라이언트를 통하여 전달 

 

 

 

세션은 저장할 수 있는 데이터에 한계가 없다. 세션은 서버 상에 존재하는 객체로서 브라우저 단위당 한 개씩 존재 하여 웹 브라우저를 닫기 전까지 페이지를 이동하더라도 사용자의 정보를 잃지 않고 서버에 보관할 수 있다. 쿠키만을 이용해 사용자의 로그인 정보를 저장한다면 쿠키가 유출, 조작 될 수 있는 보안상 문제가 생긴다. 세션은 비밀번호와 같은 인증 정보를 쿠키에 저장하지 않고 대신에 사용자의 식별자인 JSESSION- ID(session id)를 저장한다. 서버에는 인증 정보와 더불어 이 ID에 해당하는 로그인 상태, 마지막 로그인 시간, 닉네임, 만료기한 등의 정보를 저장한다. 보안상 서버는 사용자의 개인 컴퓨터 보다는 보안이 높기에 세션을 이용한다.



댓글