728x90
쿠키와 세션은 http의 특징이자 약점을 보완하기 위해 사용한다
간단하게 http를 먼저 말하자면
http는 인터넷에서 데이터를 주고 받는 프로토콜(통신규칙)이다
http프로토콜은 크게 비연결성과 무상태의 특징을 가지는데
- 비연결성: 클라이언트의 요청에 서버가 응답하면 연결을 끊는다
- 무상태: 서버는 클라이언트의 상태를 기억하지 않는다(즉, 새로운 인증을 계속 해줘야한다)
https://yangwonjoon.tistory.com/11
[네트워크] HTTP
http( hyper text transfer protocol ) 는 인터넷에서 데이터를 주고받을 수 있는 프로토콜 프로토콜? 규칙이라 생각하면 편함 이렇게 규칙을 정해두었기 때문에, 모든 프로그램은 규칙에 맞춰 개발하며
yangwonjoon.tistory.com
결국, 클라이언트와 서버의 통신은 이어지지않고 계속 인증을 해줘야한다는 것인데, 이걸 해결하기 위해 쿠키와 세션을 사용하는 것
쿠키
- 쿠키란 서버가 클라이언트에게 http header에 포함하여 보내는 데이터 조각
- 클라이언트는 이를 저장하여 참조하거나 재사용
- 키-값 형태로 이루어져있으며 이름, 만료기간, 경로가 포함
- 해당 클라이언트를 사용하면 누구나 쿠키의 값을 확인할 수 있어 보안에 취약
- 총 300개까지 저장할 수 있고, 하나의 도메인 당 20개로 제한되며, 하나의 쿠키에는 4KB까지 저장 가능
동작순서
- 클라이언트가 요청을 하면 서버는 쿠키를 생성하고 정보를 담아 응답할때 반환
- 쿠키를 받으면 클라이언트가 가지고 있다가 다시 요청을 할때 쿠키도 같이 전송
- 클라이언트에 쿠키가 존재하면 요청을 할때 쿠키를 같이 전송하는 것을 반복
사용예시
자동 로그인 유지, 팝업 보지 않기 등
세션
- 서버에 저장되는 쿠키. 데이터를 클라이언트가 아닌 서버에 저장하고 관리
- 클라이언트에는 session-id를 줘서 관리
- 서버에 저장됨으로 비교적 쿠키보다 보안이 좋다 -> session-id를 탈취하여 위장할수 있다는 한계가 존재하긴함
- 브라우저 단위로 저장되고 브라우저 종료시 삭제
- 서버에 저장하므로 요청이 많아질시 부하가 올수 있다
- 저장데이터에 제한 없다
동작순서
- 클라이언트가 페이지에 요청을 하면 Request-Header 필드인 Cookie를 확인하여, 클라이언트가 해당 session-id를 보냈는지 확인한다.
- session-id가 존재하지 않는다면 서버는 session-id를 생성해 클라이언트에게 넘겨준다.
- 클라이언트는 서버로부터 받은 session-id를 쿠키에 저장한다.
- 클라이언트는 서버에 요청시 이 쿠키의 session-id 값을 같이 서버에 전달한다.
- 서버는 전달받은 session-id로 session에 있는 클라이언트 정보를 가지고 요청을 처리 후 응답한다.
사용예시
로그인 유지
쿠키와 세션 주요 차이
쿠키 | 세션 | |
저장위치 | 클라이언트 | 서버 |
보안 | 안좋음 | 비교적 좋음(session-id 위장 위험 있음) |
라이프 사이클 | 만료기간 있지만, 클라이언트 종료해도 유지 가능 만료기간 지정하여 삭제할 때까지 유지 가능 |
브라우저 종료시 삭제 |
속도 | 빠름 | 느림 |
결국, 세션이 쿠키에 비해 보안성이 좋지만 서버부하가 올 수 있고 속도도 쿠키가 더 빠르기 때문에 사용할 것이라면 적절히 잘 요소 및 기능에 사용해야한다.
728x90
'Web' 카테고리의 다른 글
[Web] 파싱이란? (0) | 2024.06.17 |
---|---|
[Web] SDK, API란? (0) | 2024.05.06 |
[Web] CSR(클라이언트사이드랜더링), SSR(서버사이드랜더링) (1) | 2024.03.27 |
[Web] 랜더링이란 무엇인가? (1) | 2024.03.25 |