[JSP] 쿠키(Cookie), 세션(Session) > 용도, 차이, 사용법 <

2021. 11. 19. 16:29

 

 

쿠키와 세션의 개념을 알아보기 전에 HTTP 프로토콜의 특징을 필수적으로 알아봐야 할 것이다.

 

HTTP 프로토콜의 특징

  • 비연결지향
    • 클라이언트에서 서버로 요청을 보내는(request) 과정에서 서버는 클라이언트에게 응답을 하고(response) 접속을 끊는 특징을 지닌다. 
  • 비상태성
    • HTTP 통신은 클라이언트로부터 요청을 받고 응답을 한 후에는 접속을 끊는 비연결지향성 때문에 고객의 상태정보를 확인 할 수 없다.

두 가지 특징 때문에 웹사이트는 사용자의 상태정보를 식별할 수 없어서 접속할 때마다 새로운 사용자로 인식하게 된다.

사용자의 상태정보를 식별하고, 접속이 끊긴 후에 다시 접속했을 때 그 정보를 유지할 수 있는 기능으로 HTTP 프로토콜의 단점을 보완하는 것이 쿠키, 세션이다.

 

<쿠키(Cookie)>

 

📌쿠키의 개념

 

쿠키는 웹 사이트에 접속할 때 생성되는 정보의 임시 파일, 즉, 서버가 클라이언트(사용자)의 웹 브라우저에 상태정보를 저장하는 데이터를 뜻한다. 쿠키의 데이터 형태는 key / value의 형식으로 이루어져 있고,  String 형태로 이루어져 있다.

 

📌쿠키의 동작과정

  1. 클라이언트로부터 서버가 요청을 받는다.
  2. 서버는 유효성 검사를 통해 클라이언트의 로그인 정보를 확인하고, 쿠키를 생성한다.
  3. 생성한 쿠키에 상태정보를 담아, 클라이언트의 웹 브라우저에 함께 담아서 전송한다.
  4. 전송받은 쿠키파일은 클라이언트가 다시 서버로 요청할 때, 요청 페이지와 함께 서버로 전송된다.
  5. 웹사이트에 재방문시 해당 PC에 쿠키가 존재할 경우, 웹 페이지와 함께 쿠키를 전송한다.

📌쿠키의 특징

  • 사용자의 행동을 분석하여 패턴을 기록한다.
  • 쿠키의 정보가 text 타입 형식으로 저장된다.
  • 사용자마다 특성에 맞게 개별적인 페이지를 전송해준다.
  • 클라이언트에게 총 300개의 쿠키를 저장할 수 있다.
  • 서버가 정보를 가지고 있는 것이 아닌 클라이언트에게 정보를 전송하는 형태이기 때문에, 임의적으로 수정이 가능하고, 보안에 취약하다. 따라서 노출에 치명적인 정보들을 쿠키에 담는 것은 위험하다.

📌쿠키의 사용예시

  • 방문했던 웹 사이트에서 자동으로 로그인 정보를 입력하는 경우
  • 팝업창을 통해 '일주일 간 해당 내용을 보지 않기' 를 클릭하는 경우
  • 쇼핑몰의 장바구니 기능을 사용하는 경우
  • 최근 검색기록을 보고 '광고'를 추천

📌쿠키관련 메소드(JSP)

 

메소드 설명
setMaxAge() 쿠키의 유효기간을 설정
setValue() 쿠키의 값을 설정
setVersion() 쿠키의 버전을 설정
getName() 쿠키의 이름을 가져온다.
getPath() 쿠키의 유효한 디렉토리 정보를 가져온다.

 

<세션(Session)>

 

📌세션의 개념

서버와의 관계를 유지하는 수단이며 쿠키의 취약한 보안문제를 보완하기 위해서 생겨난 기능.

클라이언트가 웹 브라우저에 접속해 있는 상태를 일련의 단위로 인식하여 상태 정보를 일정하게 유지시키는 것이다.

서버 상에서 하나의 객체로 존재하기 때문에, 서버에서만 접근이 가능하여 보안이 뛰어나고, 저장할 수 있는 데이터의 한계가 없다.

 

📌세션의 동작과정

  1. 클라이언트로부터 서버가 요청을 받는다.
  2. 서버는 사용자를 구별하기 위해 요청(request)의 헤더필드인 '쿠키'를 확인하여 클라이언트가 해당 세션의 아이디를 보냈는 지 확인한다.
  3. 세션 아이디가 존재하지 않을 경우 세션아이디를 생성하여 클라이언트에게 돌려주고, 클라이언트의 세션 아이디와 쿠키를 이용하여 서버에 저장한다.
  4. 이후 같은 웹 사이트에 재 방문시, 해당 pc의 쿠키를 이용하여, 세션 아이디 값을 서버에 전달하고, 이전에 같은 사용자임을 식별함으로써 사용자의 상태정보를 확인한다.
  5. 웹사이트에 재방문시 해당 PC에 쿠키가 존재할 경우, 웹 페이지와 함께 쿠키를 전송한다.

📌세션의 특징

  • 서버 상에서 하나의 객체로 존재하기 때문에, 서버에서만 접근이 가능하여 보안이 뛰어나고, 저장할 수 있는 데이터의 한계가 없다.
  • 세션의 정보가 Object 타입의 형식으로 저장된다.
  • 서버에서 세션을 삭제하거나 브라우저를 닫았을 경우에 세션이 삭제된다.
  • 웹서버에 저장되는 쿠키는 세션의 쿠키와 같다.
  • 각 클라이언트에 고유한 세션 아이디를 부여한다.

 

📌세션관련 메소드(JSP)

 

메소드 설명
setAttribute(String name, Object value) 세션 속성명이 name인 속성에 속성값으로 value가 할당된다.
getAttribute(String name) 세션명이 name인 속성의 값을 Object 타입으로 리턴한다.
(* 실제 할당된 객체의 타입으로 형 변환을 시켜주어야 한다.)
getAttributeNames() 세션 속성의 이름들을 Enumeration 타입으로 리턴한다.
removeAttribute(String.name) 세션 속성명이 name인 객체를 삭제한다.
Invalidate() 모든 객체를 삭제한다.

 

 

 

 

 

'programming > JSP' 카테고리의 다른 글

[JSP]JDBC 연결 (Connection, Statement,resultSet),  (0) 2021.11.29

BELATED ARTICLES

more