티스토리 뷰
세션(Session)
쿠키는 브라우저가 어떤 데이터를 쿠키로 가지고 있는 것이고, 사용자가 요청할 때마다 브라우저는 쿠키를 자동으로 서버에 전송한다.
우리가 로그인 상태를 유지할 수 있는 방법 중 하나는 세션을 이용하는 방법인데 간략하게 이야기하자면, 이 쿠키에 우리가 로그인(사용자라고 인증)을 완료한 상태임을 증명하는 세션ID를 저장하고 요청마다 이 세션ID가 든 쿠키를 전송함으로써 서버는 '이 세션ID는 등록된 사용자가 맞네, 인증된 사용자니까 요청에 응답해줄게'라며 처리를 한다.
세션은 쿠키와도 밀접하게 연관된다. 쿠키에 대해서 다음의 포스팅에서 다루었다.
Cookie란, 쿠키 옵션 종류
HTTP는 stateless하다 HTTP는 웹 서버와 웹 브라우저가 데이터를 주고받기 위한 약속이다. HTTP는 상태를 가지지 않는다. 이 말은 웹에서 데이터를 주고받을 때 상태를 가지지 않는다는 것이다. 클라이
hahagarden.tistory.com
서버에 데이터를 저장한다
세션 방식은 서버 메모리 또는 데이터베이스에 세션ID와 데이터들을 저장한다. (쿠키와 토큰 방식이 클라이언트쪽에 데이터를 저장하는 것과 반대이다.)
쿠키보다 안전하다
서버에서 데이터를 관리하기 때문에 안전하다.
세션ID는 id의 역할을 할 뿐이라서 해석을 해도 아무 의미가 들어있지 않다. 랜덤 문자열일 뿐이다. 하지만 세션ID를 탈취하여(이 세션ID가 든 쿠키를 탈취하여) 사용자인 척 HTTP요청을 보낼 수 있다는(이를 세션 하이재킹 공격이라고 한다.) 가능성은 존재한다.
서버 확장성이 좋지 않다
클라이언트에 세션ID만 저장되어 있고 사용자의 인증정보와 데이터는 서버쪽에 저장되어 있기 때문에, 클라이언트로부터 요청이 들어오면 세션ID로 사용자인지 수시로 확인하기 위해 클라이언트의 상태를 유지해놓고 사용한다. stateful하다. (HTTP의 statelss에서 설명한 바와 같이 대부분의 경우 stateless를 지향해야 한다.) 이는 서버에서 이 사용자에 대한 부분을 점유하고 있는 것이다. 클라이언트가 많아지면 서버 부하가 많아지고 메모리가 부족해진다.
한 서버가 어떤 사용자를 담당하고 그 정보를 가지고 있는데, 혹시 그 서버에 문제가 생겨 서버가 다운된다면 그 사용자에 대한 정보를 사용할 수 없다. 다른 서버가 대신 일을 처리하는 것은 기존 서버의 데이터를 옮겨주는 작업이 선행되어야 하거나 불가능하다. 로그인을 못하는 것이다.
또한 세션은 상태를 유지하므로 점유를 하고 있는 것이다. 1만 명의 클라이언트를 처리할 능력이 있는 서버에 1만 명 이상의 클라이언트가 몰리면 이미 점유하고 있던 몇 명이 빠져야 나머지를 처리를 할 수 있다. 사용자의 정보는 이미 그 서버가 가지고 있기 때문에 다른 서버로의 확장도 어려워 기다려야 한다.
세션 방식이 stateful하다는 한계를 극복하기 위하여 토큰 방식이 등장했다. 토큰 방식은 다음 포스팅에서 다루겠다.
'개발 > CS, Network' 카테고리의 다른 글
Heroku(헤로쿠) 로그인 안됨 해결(email로 임시코드 받기) (3) | 2023.06.07 |
---|---|
개발 프로세스, DevOps, CI/CD, GithubAction (0) | 2023.06.05 |
Cookie(쿠키)란, 쿠키 옵션 종류 (0) | 2023.05.04 |
HTTP란, HTTP message, stateless (0) | 2023.04.21 |
SOP와 CORS (0) | 2023.04.04 |
- Total
- Today
- Yesterday
- 깃허브 데스크탑 로그아웃
- sitemap
- 회고
- 태릉삼겹살
- 태릉 꼬치
- 신불당 술집
- 태릉맛집
- 공릉 술집
- 공릉 맛집
- 공릉 카페
- 구글서치콘솔
- 을지로맛집
- 티스토리
- solo project
- 맥 깃허브 데스크탑
- 춘천닭갈비
- 홍천 삼겹살
- 롯데월드 매직패스 프리미엄
- 롯데월드 보조배터리
- 춘천맛집
- 이수 맛집
- 공릉 이자카야
- 티스토리검색
- 공릉맛집
- 공릉 꼬치
- 태릉 술집
- 태릉 이자카야
- Til
- 공릉 밀크티
- 롯데월드 키오스크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |