개발하는 무민

[코드프레소] 웹개발 트랙 체험단 - 쿠키와 웹 세션이란? 본문

Project/[코드프레소] JAVA웹개발트랙

[코드프레소] 웹개발 트랙 체험단 - 쿠키와 웹 세션이란?

무민_ 2022. 3. 7. 11:41

앞으로 강의를 들으면서 필요한 내용인 쿠키와 웹 세션에 관한 정리를 해보고자 한다.

 

 

우선, http의 특징을 먼저 확인해보자.

 

http 프로토콜은 connectionless하고 stateless한 특성이 있다.

*connectionless : 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에서 response를 하고 서로 접속을 끊는 특성

* stateless : 접속을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태 정보는 유지되지 않는 특성

 

이렇게 http는 통신을 유지하고 있을 때 낭비되는 리소스를 줄인다는 장점이 있지만

통신을 할 때 마다 내가 누구인지를 인증해야 하는 단점이 있다.

 

이러한 문제점을 쿠키와 세션을 사용해서 해결할 수 있다.

 

그렇다면 쿠키와 세션은 무엇일까?

 

쿠키(Cookie)란?

쿠키는 클라이언트 로컬에 저장되는 Key-Value 쌍의 작은 데이터 파일

쿠키는 이름, 값 만료 날짜(쿠키 저장기간), 경로 정보 등이 들어가있다.

쿠키는 일정 시간 동안 데이터를 저장할 수 있어서 로그인 상태 유지에 사용된다.

쿠키는 클라이언트의 상태 정보를 본인 하드디스크에 저장했다가 필요한 시점에 참조하고 재사용한다.

 

쿠키의 원리

1. 클라이언트가 브라우저로 웹 페이지에 접속한다.

2. 클라이언트가 요청한 웹 페이지를 전송받으면서 쿠키(클라이언트의 상태정보)를 하드에 저장한다.

3. 클라이언트 재 방문 시 웹 페이지 요청과 함께 쿠키값을 전송한다.

4. 지속적으로 로그인 정보를 가지고 있는 것 처럼 사용이 가능하다.

 

쿠키의 예시로는 네이버 로그인 화면 등에서 아이디와 비밀번호를 저장하는 기능 등이 있다.

 

쿠키 제약 조건

클라이언트에 총 300개까지 쿠키를 저장할 수 있다.

하나의 도메인 당 20개의 값만 가질 수 있다. (20개를 초과하면 가장 적게 참조된 쿠키가 지워진다.)

하나의 쿠키 값은 4MB까지 저장이 가능하다.

 

쿠키의 구성 요소

쿠키 이름, 쿠키 값, 만료 시간, 전송할 도메인 명, 전송할 경로, 보안 연결 여부, HttpOnly 여부 등

 

 

세션(Session)이란?

세션은 클라이언트와 웹서버 간의 네트워크 연결이 지속적으로 유지되고 있는 상태이다.

즉, 사용자가 브라우저를 열어 서버에 접속한 뒤, 접속을 종료할 떄 까지의 시점을 말한다.

http 프로토콜은 비접속형(connectionless) 프로토콜이므로 매 접속 시 마다 새로운 네트워크 연결이 이루어지는데, 세션이 이러한 연결 유지를 가능하게 해준다.

클라이언트가 웹 서버에 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하게 되고, 이 ID를 세션이라고 칭한다.

세션 ID는 임시로 저장하여 페이지 이동 시 이용하거나, 클라이언트가 재 접속 했을 때 클라이언트를 유일하게 구분하는 수단이 된다.

 

세션의 원리

1. 세션 ID를 서버에서 클라이언트가 다시 웹사이트에 접속하는 경우 발급해 준다.

2. 서버에서 클라이언트로 발급해준 세션 ID를 쿠키를 사용해서 저장한다.

3. 클라이언트는 웹 페이지에 다시 접속하는 경우, 저장해놓은 쿠키를 사용해서 세션 ID값을 서버에 전달한다.

 

세션의 장점

각 클라이언트에게 고유 ID를 부여한다.

세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공할 수 있다.

사용했던 정보들을 서버에 저장하기 때문에 보안 면에서 쿠키보다 우수하다.

 

세션의 단점

서버에 저장되는 세션 때문에 서버에 처리를 요구하는 부하와 저장 공간을 필요로 한다.

 

세션의 사용 예시

로그인과 같이 보안상의 중요한 작업등은 세션을 통해서 작동한다.

 

 

이렇듯, 쿠키와 세션은 비슷한 역할을 한다.

그렇다면 쿠키와 세션의 차이점은 무엇일까?

 

저장위치
쿠키는 로컬에, 세션은 로컬과 서버에 저장

 

보안
쿠키는 탈취와 변조가 가능하지만, 세션은 ID값만 가지고 있고 서버에도 저장이 되어있기 때문에 상대적으로 안전

 

Lifecycle
쿠키는 브라우저를 종료해도 파일로 남아있지만, 세션은 브라우저 종료시 세션을 삭제함

 

속도
쿠키는 파일에서 읽기 때문에 상대적으로 빠르고, 세션은 요청마다 서버에서 처리를 해야하기 때문에 비교적 느림

 

 

참고링크

https://chrisjune-13837.medium.com/web-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80-aa6bcb327582

 

[WEB] 쿠키, 세션이란?

웹의 기초중 하나인 쿠키와 세션에 대해 알아봅니다.

chrisjune-13837.medium.com

https://juyoung-1008.tistory.com/2

 

쿠키와 세션이란

쿠키와 세션에 대한 개념을 정리 하도록 하겠습니다. 쿠키와 세션이란? 쿠키와 세션은 http 프로토콜의 약점을 커버하기 위해서 존재합니다. http 프로토콜은 Connectionless하고 Stateless하다라고 이야

juyoung-1008.tistory.com

 


https://www.codepresso.kr/