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
'교재 실습 > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
6.2.2 요구사항 분리 및 힌트 (2) | 2025.04.28 |
---|---|
6.2.1 요구사항 (5) | 2025.04.25 |
6.1.5 중복 코드 제거 (2) | 2025.04.23 |
6.1.4 회원 목록 및 개인정보 수정 보안 강화 실습 (6) | 2025.04.22 |
6.1.3 로그인/로그아웃 기능 실습 (4) | 2025.04.21 |
댓글