What is Cookie?
쿠키란 클라이언트(웹브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.
즉 사용자가 특정한 요청을 서버에 보냈고, 서버는 그 내용을 쿠키로 저장하기위해 사용자에게 쿠키파일을 저장할 것을 요청합니다.
쉽게 말하면 만약에 아이디와 비밀번호를 입력하고 로그인을 하면 그 이후에도 다른 페이지를 돌아다닐 때 아이디와 비밀번호를 매번
입력할 필요없이 저장되 있는 쿠키의 키, 값(아이디와 비밀번호) 을 통해서 계속 정보를 입력할 필요 없이
사용자를 인식할 수 있게 도움을 주는것이죠!
쿠키의 특징
- 쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.
- 사용자 인증이 유효한 시간을 명시할 수 있고, 유효 시간이 정해지면 그 시간이 되기전 까지는 브라우저가 종료되어도 인증이 유지 됩니다!
- 쿠키는 클라이언트(사용자)의 상태 정보를 사용자의 로컬에 저장했다가 참조합니다. 즉 개발자가 정해논 쿠키 변수명을 통해서 참조하겠죠?
- 대신 보안에 취약합니다. 쿠키 데이터는 사용자의 웹브라우저에 남아있기에 별도의 관리를 받지 못하는 상태입니다. ⇒ 이것을 보완해서 나온게 Session(서버측에서 관리) 인거죠!
쿠키의 사용 예
- 방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
- 쇼핑몰의 장바구니 기능
- 자동로그인, 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크,
- 쇼핑몰의 장바구니
What is Session?
세션은 쿠키와 크게 의미는 다르지 않습니다.
하지만 쿠키와 다르게 저장된 정보를 브라우저에 저장하는게 아니라 서버측에서 저장하고 관리합니다! (보안성이 더 좋겠죠?)
세션은 클라이언트(사용자)를 구별하기 위해서 고유의 세션 ID를 부여합니다. 이 ID에 클라이언트의 정보가 들어가있죠.
클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는 데 이것이 세션 ID입니다
세션의 특징
- 위에서 말했듯이, 클라이언트측 브라우저에 데이터를 저장하는게 아니다 보니 동접자가 많은 웹페이지 라면
서버에서 세션을 클라이언트에게 그만큼 많이 부여하게 되고, 이렇게 되면 서버메모리를 차지를 많이하겠죠.
- 즉 보안성에는 쿠키보다 좋지만, 성능 측면에서 많은 유저가 한번에 몰리게 되면, 서버의 메모리가 부족하게 되는 상황이 발생할수도 있습니다 (끔직하네요^^)
한마디로 서버가 “터졌다” 라고 할수 있겠죠?… 세션을 부여해야하는데 메모리가 부족하니 더이상 부여를 할 수 없어서 서버가 먹통이 되는겁니다…
- 그리고 세션은 클라이언트가 브라우저를 종료시키기전 까지 할당됩니다. 종료를 시키면 인증정보를 모두 삭제 시키는겁니다 !
세션의 사용 예
- 로그인 같이 보안상 중요한 작업을 수행할 때 사용합니다.
결론 :
세션도 데이터를 저장하는 일종의 쿠키입니다. 하지만 그것을 어디에 저장하냐에 차이인거죠!!
세션 ⇒ 서버 || 쿠키 ⇒ 브라우저(클라이언트)
그렇다면 세션이 보안상 좋은데 쿠키를 사용하는 이유는?
⇒ 세션은 서버의 메모리영역에 저장이 되기에, 무분별하게 사용하게 되면 서버의 성능저하를 일으키는 원인이 될 수 있습니다.
속도적인 측면은요???
⇒ 당연히 쿠키가 빠르겠죠, 쿠키는 클라이언트의 브라우저에 저장되있는걸 별도의 과정없이 바로 가져다 쓰지만,
세션은 서버측에서 정보를 받아와서 사용하기에 좀 더 많은 단계를 거쳐가겠죠? 🙂
소멸시기는 어떻게 다르나요??
⇒ 쿠키는 브라우저에 저장이 되기에 (ex. chorme, safari,….) 소멸시간을 길게 잡아 놓으면, 사용자가
직접 쿠키를 삭제하지 않는이상 브라우저에 남아있게 됩니다. (1년으로 설정을 해놓으면 의도적으로 삭제하지 않는 이상 쿠키정보는 1년동안 남아있죠)
하지만 세션은? 웹브라우저가 종료된 시점에서 세션도 같이 소멸하게 됩니다. 또한 별개로 접속시간에 제한을 둘 수 있습니다.
일정한 시간동안 해당 페이지에서 응답이 없는 상태라면 자동으로 세션을 소멸시키는 설정도 있습니다.
저는 일단 이정도로만 구별하고 사용한다면, 별 문제는 없을거 같아서 쿠키과 세션에 대해서
정리는 여기까지만 하기로 했습니다! 어려운 개념도 아니고 평상시에 쿠키라는 단어는 되게 많이 들어서
익숙한 상태라 그런지, 이해가 바로바로 되서 글을 쓰기까지에도 시간이 많이 걸리지 않았습니다!
글을 쓰면서 느낀 핵심 포인트는
쿠키는 클라이언트 브라우저에 저장한다. 소멸은 서버에서 설정한 소멸시간에 소멸한다.
세션은 서버측 메모리영역에 저장한다. 소멸은 웹브라우저를 종료하거나, 일정시간 웹페이지에서 응답이 없을 경우 소멸된다.
입니다 🙂
벌써 세벽 3시네요….오늘도 일찍 자긴 글렀습니다 하핳
그래도 이렇게 뭔가 깨달아가고 공부하는건 너무 재밌는거 같습니다…..너무 미친놈같나요^^….???
'Network' 카테고리의 다른 글
로드벨런싱이란? 개념과 특징 (Feat. L4 LB, L7 LB) (0) | 2023.02.14 |
---|---|
웹소켓 Web Socket 이란?... (0) | 2023.01.20 |
Network AND HTTP 프로토콜 (0) | 2023.01.17 |