1. 쿠키와 세션을 사용하는 이유
쿠키와 세션은 HTTP의 특징이자 약점을 보안하기 위해 사용된다.
HTTP 프로토콜은 Connectionless 및 Stateless의 특징을 가진다.
1. Connectionless
- 클라이언트가 서버에 요청(Request)를 보낸 후 응답(Response)을 받으면 그 연결을 끊어버리는 특징이다.
- HTTP 1.1 버전에서는 헤더에 keep-alive 값을 줘서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다. 아래 이미지는 유효 연결이 열려 있어야 하는 최소한의 단위이다. 시간이 지나면 연결을 끊는다.
2. Stateless
- 통신 연결이 끝나면 상태 정보를 유지하지 않는 특징이다.
예를들어 쿠키와 세션을 사용하지 않고 어떤 페이지에 로그인을 했음에도, 상태 정보가 남아 있지 않아 페이지를 이동할 때마다 계속 로그인을 해야 서비스를 이용할 수 있다.
그렇기 때문에 쿠키와 세션을 이용해 상태 정보를 유지할 수 있다.
2. 쿠키 (Cookie)
쿠키란?
쿠키란 클라이언트 (브라우저) 로컬에 저장되는 키와 값이 들어 있는 작은 데이터 파일이다.
브라우저가 종료되어도 설정한 시간이 지나지 않으면 데이터가 삭제되지 않음.
쿠키의 사용 예
토큰 저장,
자동 로그인,
팝업창에서 '오늘 더이상 이 창을 보지 않음' 등의 메세지
3. 세션 (Session)
세션이란?
일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술이다.
여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.
즉, 방문자가 웹서버에 접속해 있는 상태를 하나의 단위를 보고 세션이라고 칭한다.
세션의 동작 방식
- 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
- 클라리언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
- 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라언트 정보를 가져와서 사용
- 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답
세션의 사용 예
로그인과 같은 보안상 중요한 작업을 수행할 때 사용한다. 데이터를 서버측에서 관리하기 때문에 보안에 용이하다.
4. 세션과 쿠키의 차이
쿠키 (Cookie) | 세션 (Session) | |
저장 위치 | 클라이언트 (사용자 브라우저) | 웹서버 |
저장 형식 | text | Object |
만료 시점 | 브라우저가 종료되어도 만료시점이 지나지 않으면 삭제되지 않음. | 브라우저 종료시 삭제 (기간 지정 가능) |
사용하는 자원(리소스) | 클라이언트 리로스 | 웹서버 리소스 |
용량 제한 | 총 300개 하나의 도메인당 20개 하나의 쿠키당 4KB |
서버가 허용하는 만큼 |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
5. 세션을 사용하지 않고 쿠키를 사용하는 이유
세션은 사용자(브라우저)마다 데이터가 서버에 저장되고, 서버 자원을 사용하기 때문에 사용자가 많을수록 서버의 성능이 낮아질 수 있다.
참고자료
https://interconnection.tistory.com/74
https://hahahoho5915.tistory.com/32
'개발공부 & Network & OS' 카테고리의 다른 글
SSR(Server Side Rendering) vs CSR(Client Side Rendering) (0) | 2022.06.30 |
---|---|
[Windows] 환경변수 path란? (0) | 2022.05.23 |
[Web] SOP와 CORS (2) | 2022.02.05 |
실시간 데이터 전송 (Polling / webSocket) (0) | 2021.06.25 |