1. HTTP?
HTTP는 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.
클라이언트가 서버에게 요청을 보내면, 서버는 응답을 보냄으로써 데이터를 교환한다.
HTTP의 특징
비연결성, 무상태성
HTTP는 요청 처리 후 연결을 끊어버린다.(비연결성) 이때문에 클라이언트의 상태 정보 및 현재 통신 상태가 남아있지 않다.(무상태성)
장점 : 서버의 자원 낭비를 줄일 수 있다.
단점 : 남아있지 않아, 클라이언트를 식별할 수 없다.
이렇게 된다면 우리가 로그인을 한 뒤에도 새로고침을 할 때마다 로그아웃이 되어 무한 로그인을 해야할 것 이다.
이런 문제를 해결하기 위해서 Cookie와 Session 을 사용한다.
2. Cookie
웹사이트에 접속을 했을 때, 브라우저 안에 저장되는 아주 작은 데이터 파일, 클라이언트에 저장되는 key&value형태의 작은 데이터 파일이다.
서버는 클라이언트의 요청에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie에 담는다. 이후 클라이언트는 요청을 보낼 때 마다 저장된 쿠키를 요청 헤더의 Cookie에 담아 보낸다. 이 쿠키를 받은 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별할 수 있다.
쿠키를 사용하는 이유?
위에 HTTP설명에서와 같이 웹사이트를 재방문시에 효율적우로 서비스를 제공하기 위해 사용한다.
쿠키에는 무엇을 저장할까?
- 사이트에 방문한 이력, 검색 기록, 로그인 상태 등을 저장한다.
쿠키의 특징
1. 브라우저 단위로 생성한다
예를 들어 사파리, 크롬 등 각각 별로 쿠키를 생성한다.
2. 다른 도메인을 대신하여 쿠키 발급이 불가능하다.
3. 만료 시간까지 상태 정보를 유지한다.
쿠키에는 사용자의 정보등이 담겨 있어 이것이 탈취 당한다면 문제가 생길 수 있다.
예를 들어 쿠키의 값을 임의로 바꾸거나 누군가 대신 로그인한다거나, 중요한 정보가 있다면 큰 문제가 발생할 것이다.
또한 쿠키의 용량이 크지 않아 많은 정보를 담을 수 없다.
이를 해결하기 위해 나온 방법이 쿠키와 세션을 함께 사용하는 것이다. 그렇다면 세션은 무엇일까?
3. Session
세션의란 웹 사이트에 이용되는 클라이언트의 인증 정보를 서버에 저장하는 방법이다.
동작 방식
서버는 클라이언트의 로그인 요청에 대한 응답을 작성할 때 , 인증 정보는 서버에 저장하고 클라이언트 식별자인 세션ID를 쿠키에 담는다. 이후 클라이언트는 요청을 보낼 때마다 세션ID쿠키를 함께 보낸다. 서버는 세션ID를 통해 클라이언트를 식별한다.
세션을 서버에 두는 이유?
쿠키에 sessionId외에는 다른 정보를 기록하지 않음으로써 안전성을 확보할 수 있다.
단점
1. 유저 정보가 서버에 있기 때문에 처리 속도에 대한 비용 발생한다.
2. 서버 자원을 사용하기 때문에 유저가 많아지면 저장 공간에 대한 비용이 발생한다.
3. 해커가 세션ID를 중간에 탈취하여 클라이언트인 척 위장할 수 있다.
해결방법
토큰 , JWT(REMEMBER_ME) 이고 요즘 JWT를 가장 많이 사용한다.
곧,,, 공부하여 추가 해보겠습니당...🥲
[참고자료]
쿠키, 세션, 토큰(JWT) 몰라도 괜찮겠어?
깔끔하게 정리했으니 몇 분만 투자해서 이번 기회에 바로 알고 가기 😀
velog.io
정말 잘 정리 되어 있다 ..!
'Computer Science' 카테고리의 다른 글
[OSTEP 운영체제 정리] - Concurrency Problem (0) | 2024.06.24 |
---|---|
[OSTEP 운영체제 정리] - semaphore (0) | 2024.06.23 |
[OSTEP 운영체제 정리] - Condition Variable (0) | 2024.06.23 |
[OSTEP 운영체제 정리] - Lock based Concurrent Data Structures (0) | 2024.06.23 |
[OSTEP 운영체제 정리] - Lock (0) | 2024.06.23 |