본문 바로가기
교재 실습/자바 웹 프로그래밍 Next Step

6.2 세션(HttpSession) 요구사항 및 실습

by Jint 2025. 4. 24.

HTTP는 클라이언트와 서버가 연결된 후 상태를 유지할 수 없다. 따라서 HTTP를 무상태 프로토콜이라고 부른다. 하지만 웹 애플리케이션은 로그인과 같이 상태를 유지할 필요가 있는 요구사항이 발생한다. 이와 같이 상태를 유지할 필요가 있을 때 사용할 수 있는 방법이 쿠키(Cookie) 헤더를 사용하는 방법(쿠키 외에 요청을 보낼 때 인자를 통해 전달하는 방법도 있지만 추천할 만한 방법은 아니다. 단, 쿠키를 사용할 수 없는 경우에는 인자를 통해 매번 상태 값을 전달할 수밖에 없다.)이다.

일단 "Set-Cookie" 헤더를 통해 쿠키를 생성하면 이후 발생하는 모든 요청에 "Set-Cookie"로 추가한 값을 "Cookie" 헤더로 전달하는 방식이다. 그런데 쿠키를 사용하는데 문제점이 하나 있다. 보안상 취약하다는 문제다. 웹 개발에 대한 약간의 관심이 있는 사람이라면 누구나 브라우저 개발자 도구나 HTTP 분석 도구를 활용해 HTTP 요청, 응답 헤더를 눈으로 볼 수 있다. 따라서 쿠키를 통해 비밀번호나 이메일 주소와 같은 개인 정보를 전달하는 것은 적합한 방법이 아니다.

이 같은 쿠키의 단점을 보완하기 위해 세션이 등장했다. 세션은 상태 값으로 유지하고 싶은 정보를 클라이언트인 브라우저에 저장하는 것이 아니라 서버에 저장한다. 서버에 저장한 후 각 클라이언트마다 고유한 아이디를 발급해 이 아이디를 "Set-Cookie" 헤더를 통해 전달한다. HTTP에서 상태를 유지하는 방법은 쿠키 밖에 없다고 했다. 세션이 상태 데이터를 웹 서버에서 관리한다는 점만 다를 뿐 HTTP에서 상태 값을 유지하기 위한 값을 전달할 때는 쿠키를 사용한다. 웹 개발자를 만나보면 쿠키와 세션이 아무런 관계가 없는 것으로 생각하는 경우가 종종 있다. 하지만 세션은 HTTP의 쿠키를 기반으로 동작한다는 것을 기억한다.

이 절에서는 세션 API를 직접 구현하면서 웹 서버 측에서 상태 데이터를 어떻게 관리하는지 살펴본다. 앞의 실습 과정과 같이 요구사항을 통해 개인별 실습을 먼저 진행한 후, 세션 API를 직접 구현하면서 설명한다.



참고도서 : https://roadbook.co.kr/169

 

[신간안내] 자바 웹 프로그래밍 Next Step

● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9월 19일 ● ISBN: 978-89-97924-24-0 93000 [강컴] [교보] [반디] [알라딘] [예스24] [인터파크] [샘

roadbook.co.kr

댓글