백엔드 공부/JSP

쿠키와 세션의 개념, 차이와 사용법 정리 + 어플리케이션

철매존 2021. 11. 20. 18:56
728x90
반응형

쿠키

쿠키란

  • http프로토콜에서 웹 브라우저에서 서버로 데이터를 요청하면, 서버 측에서는 로직을 수행한 후에 데이터를 웹브라우저에게 응답함. 그리고 서버는 웹브라우저와의 관계를 종료한다.
  • 이 때 쿠키를 사용하면 연결이 끊겼을 때 어떤 정보를 지속적으로 유지할 수 있다.
  • 쿠키는 서버에서 생성해서 클라이언트측에 정보를 저장한다.
    • 이후 서버에 요청할 때 마다 쿠키의 속성값을 참조/변경할 수 있다.
  • 4kb의 용량을 가지며, 최대 300개까지 데이터 정보를 가질 수 있다.

쿠키 전달 과정

  1. javax.servelt.http패키지의 Cookie클래스를 사용하여 쿠키 생성
  2. 해당 쿠키에는 웹 브라우저 판별용 정보가 포함되어 있음.
  3. 쿠키 속성 설정
  4. 웹 서버가 요청에 응답할 때 response객체에 저장
  5. 사용자 브라우저 저장

쿠키 관련 메소드

  • setMaxAge()
    • 쿠키의 유효기간을 설정한다.
      • 쿠키의 경우 클라이언트에 저장되기 때문에 삭제를 위해서는 이 유효기간을 없애주어야 한다.
  • setPath()
    • 쿠키사용의 유효 디렉터리를 설정한다.
  • setValue()
    • 쿠키의 value를 설정한다.
  • setVersion()
    • 쿠키 버전을 설정한다.
  • getMaxAge()
    • 쿠키의 유효기간을 확인한다.
  • getName()
    • 쿠키의 이름을 확인한다.
  • getPath()
    • 쿠키의 유효 디렉터리 정보를 확인한다.
  • getValue()
    • 쿠키의 value를 확인한다.
  • getVersion()
    • 쿠키의 버전을 확인한다.

세션

세션이란

  • 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단이다.
  • 단, 세션은 서버상에 객체로 존재한다.
    • 서버에서만 접근이 가능하여 쿠키보다 보안이 좋고, 저장 가능 데이터에 한계가 없다.

세션 저장 과정

  1. 클라이언트에서 요청
  2. Session의 생성
  3. Session생성은 내부 객체에서 이루어진다.
  4. Session의 속성을 설정 후, 저장한다.

세션 관련 메소드

  • setAttribute()
    • name - value 설정
      • name은 String
      • value는 Object
  • getAttribute()
    • name의 값을 통해 Object형태로 존재하는 value를 return한다.
      • 해당 name을 검색했을 때 value가 없으면 null이 리턴된다.
  • getAttributeNames()
    • 모든 name을 Enumeration객체 타입으로 리턴한다.
  • getId()
    • 세션의 고유 식별자를 String타입으로 리턴한다.
  • isNew()
    • 세션이 최초 생성되었는지, 이전에 생성된 것인지 구분한다.
      • 최초 생성이면 True
      • 이전에 생성되었으면 False
  • setMaxInactiveInterval()
    • int형식을 사용하여 세션 유지시간을 설정
      • 단위는 초(sec)
  • getMaxInactiveInterval()
    • 세션의 유효시간을 return한다.
      • 단위는 초(sec)
  • removeAttribute()
    • name을 입력하면 세션에서 해당 객체를 삭제한다.
  • invalidate()
    • 세션의 모든 데이터를 삭제한다.

쿠키와 세션의 차이

  • 저장 위치의 차이
    • 쿠키는 클라이언트(사용자의)의 로컬에 저장된다.
    • 세션은 서버에 저장된다.
    • 쿠키와 세션의 차이는 보통 이 저장 위치의 차이에서 기인한다.
  • 생명주기
    • 쿠키는 사용자의 로컬에 파일로 저장되어 있기 때문에 브라우저가 종료되어도 남아있는다.
    • 세션은 브라우저가 종료되면 함께 사라진다.
  • 용량의 차이
    • 쿠키는 최대 4kb저장 가능
    • 세션은 무제한

쿠키와 세션의 사용법

  • 보안
    • 세션이 비교적 우수하다
      • 쿠키는 로컬에서 쿠키가 변경되거나, request중 스니핑 당할 위험이 있다.
      • 반면 세션은 ID를 저장하여, 그것을 서버에서 처리하기 때문에 쿠키보다는 보안에서 유리하다.
  • 속도
    • 쿠키가 더 빠르다.
      • 쿠키는 로컬에 저장되어, 서버에 요청할 필요가 없다.
        • 따라서 세션보다 쿠키의 속도가 빠르다.
  • 저장
    • 브라우저 종료 시 세션은 초기화된다.
      • 따라서 브라우저를 꺼도 정보가 남아있게 하려면 쿠키를 사용하는 것이 권장된다.
  • 서버 부하
    • 세션은 서버에 저장된다.
      • 너무 많은 세션을 사용하면 서버에 부하가 발생한다.
        • 보안이 중요하지 않은 데이터의 경우 쿠키를 사용하는 것이 권장된다.

+) 어플리케이션

  • 웹 어플리케이션에 정보를 저장한다.
  • 세션과 달리 어플리케이션은 서버가 종료되기 전까지 정보가 유지된다.

어플리케이션 메소드

거의 세션과 비슷하다

  • setAttribute()
    • name - value 설정
      • name은 String
      • value는 Object
  • getAttribute()
    • name을 통해 어플리케이션의 value를 불러온다.
  • removeAttribute()
    • name을 사용하여 해당 어플리케이션을 삭제한다.
반응형