개발자는신이야
The first step
개발자는신이야
전체 방문자
오늘
어제
  • 분류 전체보기 (114)
    • 🍃웹개발 Spring (15)
    • ❓내 질문 (4)
    • 🔥웹개발종합반 (11)
    • 💻개인프로젝트 (5)
    • 😕error (2)
    • 💡알고리즘 (3)
    • 📖혼자공부하는자바 (22)
    • 📑WIL (2)
    • 🥸 CS 면접 스터디 (13)
    • 🤓천재교육 풀스택 1기 노트 (21)
    • ⏰정처기 공부 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • jquery
  • API
  • CRUD
  • IntelliJ
  • SQL
  • Controller
  • 변수
  • style
  • boot
  • Java
  • JPA
  • 기초
  • HTML
  • Spring
  • db
  • database
  • dependencies
  • repository
  • CSS
  • Lombok

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
개발자는신이야

The first step

🤓천재교육 풀스택 1기 노트

JSP 세션

2023. 8. 2. 00:38

세션은 클라이언트의 상태 정보를 서버 측에 저장할 수 있다.

쿠키는 정보를 클라이언트에 저장한 후 네트워크로 주고받기 때문에 민감한 정보를 다루기엔 위험하다.

한편 세션은 서버가 직접 관리하므로 민감한 정보를 다루기에 더 적합하다.

 

세션이란?

세션은 클라이언트가 서버에 접속해 있는 동안 그 상태를 유지하는 것이 목적이다.

 

 

유지 시간 설정

세션은 웹 브라우저를 실행할 때마다 새롭게 생성된다.

이렇게 생성 된 세션은 설정된 유지 시간 동안 유지되며, 유지 시간이 만료되기 전에 새로운 요청이 들어오면 수명이 계속 연장된다. 그리고 만료 때까지 클라이언트가 아무런 요청을 하지 않거나 웹 브라우저를 닫으면 삭제된다.

 

세션의 유지 시간을 설정하는 방법은 두 가지가 있다.

 

1. /WEB0INF/web.xml에서 설정하기

<?cml servion="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi=...생략...>
	...생략...
    
    <session-config>
    	<session-timeout>20</session-timeout>
    </session-config>
</web-app>

web.xml에서는 유지시간을 분 단위로 설정한다.

 

2. setMaxInactiveInterval()로 설정하기

setMaxInactiveInterval()은 JSP 파일에서 session 내장 객체가 제공한다.

<%
session.setMaxInactiveInterval(1800);
%>

web.xml과 달리 이 메서드의 시간 단위는 초이다.

따라서 이 코드는 1800초, 즉 30분으로 설정되어 있는 것이다.

 

두 가지 설정은 방법만 다를 뿐 동일하게 적용된다.

 

설정값 확인

세션의 속성에는 유지 시간과 다른 세션과 구분하기 위한 아이디, 최초 요청 시각(생성 시간), 마지막 요청 시각 등이 있다.

메서드 기능
session.getCreationTime() 최초 요청(세션 생성) 시각 반환
session.getLastAccessTime() 마지막 요청 시각 반환
session.getId() 세션 ID 반환

 

만약 쿠키값을 확인한다면 개발자가 설정한 쿠키 이외에 JSESSIONID라는 쿠키가 존재할 것이다.

JSESSIONID는 우리가 생성한 적이 없지만 톰캣 컨테이너에서 새로운 웹 브라우저가 접속하면 세션을 유지하기 위해 자동으로 생성해 주는 쿠키이다.

 

JSESSIONID의 동작 방식

  1. 웹 브라우저가 처음 접속하면 서버(톰캣)는 세션을 새로 생성한다. 그리고 응답 시 세션 아이디를 값으로 갖는 JESSIONID 쿠키를 응답 헤더에 담아 웹 브라우저에 보낸다.
  2. 웹 브라우저는 재요청 시마다 JSESSIONID를 요청 헤더에 추가하여 보낸다.
  3. 서버는 요청 헤더에 포함된 JSESSIONID를 해당 요청이 기존 세션에서 이어진 것임을 알게 된다.

즉, 웹 브라우저로부터 전달받은 JSESSIONID를 통해 서버는 세션 영역에 상태를 유지해야 하는 값들을 저장할 수 있게 되는것이다.

세션 삭제

앞서 세션은 웹 브라우저를 닫으면 종료된다고 했다.

그렇지만 웹 브라우저를 닫지 않고도, 웹 브라우저 설정에서 모든 쿠키를 삭제해 세션을 삭제하는 방법도 있다.

 

 

쿠키 vs 세션

  쿠키 세션
저장 위치/형식 클라이언트 PC에 text로 저장 웹 서버에 Object 타입으로 저장
보안 클라이언트에 저장되므로 보안에 취약 서버에 저장되므로 보안에 안전
자원/속도 서버 자원을 사용하지 않으므로 세션보다 빠름 서버 자원을 사용하므로 쿠키보다 느림
용량 용량의 제한이 있다. 서버가 허용하는 한 제한이 없다.
유지 시간 쿠키 생성 시 설정한다. 단, 설정된 시간이 경과되면 무조건 삭제된다. 서버의 web.xml에서 설정한다. 설정된 시간 내라도 동작이 있다면 삭제되지 않고 유지된다.

 

표에서 보듯 쿠키는 정보가 클라이언트에 기록되기 때문에 보안 측면에서는 안전하지 않다.

웹 브라우저의 개발자 도구를 이용해 값을 변경할 수 있고, 변경한 값을 전송할 수 있다.

또한 개인정보 무단사용 방지 차원에서 웹 브라우저에는 쿠키를 거부할 수 있는 설정이 있다. 이 설정이 되어 있다면 쿠키를 이용한 로그인과 같은 기능을 사용할 수 없게 된다.

 

이에 반해 세션은 서버에 저장되므로 보안에 안전하다. 그러므로 개인정보와 같은 민감한 정보라도 저장하는데 문제가 없다.  웹 브라우저가 종료되면 세션도 같이 삭제되므로 로그아웃 유무와 상관없이 기존 세션은 소멸되고, 접속 시 새로운 세션이 생성 된다.

 

핵심 요약

쿠키와 세션은 JSP에서는 클라이언트의 상태 정보를 저장하는 방법이다.

  • 쿠키는 상태 정보를 클라이언트 PC에 저장한다.
  • 세션은 서버에 저장한다.

이러한 특성 때문에 보안 측면에서 크게 중요하지 않은 경우 쿠키를, 보안이 중요한 정보는 세션을 사용하여 저장한다.

 

  • 세션은 클라이언트가 웹 브라우저를 통해 서버에 접속한 후 웹 브라우저를 닫을 때까지의 단위를 뜻한다.
  • 클라이언트가 서버에 접속한 동안 상태를 유지하기 위해 세션 영역을 이용해 상태 정보를 저장한다.
  • 세션의 유지 시간 설정은 web.xml을 이용하는 것이 편리하다.
  • 설정된 유지 시간 동안 아무런 동작이 없다면 세션은 소멸된다. 하지만 동작이 있는 한 계속 유지된다.
  • 세션 영역은 다른 페이지와도 공유되므로 클라이언트별 상태 정보를 관리하기에 아주 유용한 수단이다.

'🤓천재교육 풀스택 1기 노트' 카테고리의 다른 글

JSP 쿠키  (0) 2023.08.01
JSP 지시어와 스크립트 요소  (0) 2023.07.30
JSP 기본  (0) 2023.07.30
천재교육 풀스택1기 과정 JSP Section1. 서블릿, 자바 웹 기술의 새 지평을 열다.  (3) 2023.07.28
천재교육 풀스택과정 1기 DAY17  (0) 2023.06.05
    '🤓천재교육 풀스택 1기 노트' 카테고리의 다른 글
    • JSP 쿠키
    • JSP 지시어와 스크립트 요소
    • JSP 기본
    • 천재교육 풀스택1기 과정 JSP Section1. 서블릿, 자바 웹 기술의 새 지평을 열다.
    개발자는신이야
    개발자는신이야
    첫발을 내디딘 초보 개발자입니다.

    티스토리툴바