쿠키와 세션의 개념을 알아보기 전에 HTTP의 특징을 통해 우리가 왜 이걸 사용하는지 알아보겠습니다.
HTTP 특징
connectionless
클라이언트 -> 서버(요청)서버 ->클라이언트(응답)일련의 작업 후에 연결을 끊어버립니다.
stateless
통신이 끝나면 상태를 유지하지 않는 특성입니다.
상상을 해봅시다. 어느 사이트에서 쇼핑을 하려고 합니다.
로그인을 하고 상품을 고르고 결제하려는데 또 로그인을 하래요.
왜?? 연결이 끊겼고 당신이 로그인했다는 상태가 유지되고 있지 않으니까요.페이지를 새로고침 하고~ 이동할 때마다 인증을 계속해야 한다면 유저는 귀찮겠죠.HTTP 프로토콜의 특성을 가지고 가며 문제점을 해결할 수 있는 친구가 세션과 쿠키입니다.
쿠키
쿠키는 클라이언트에 저장되는 Key-value의 데이터 파일입니다.
사용자 인증을 유지할 시간을 따로 정할 수 있고, 그동안은 계속해서 인증이 유지됩니다.
쿠키 구성요소
Name : 쿠키의 이름
Value : 쿠키에 저장된 값
Expires : 쿠키 유효 기간
Domain : 쿠키가 사용되는 도메인을 지정.
Path : 쿠키를 반환할 경로를 결정
쿠키 동작 방식
세션
세션은 쿠키를 기반하고 있지만, 쿠키와 달리 세션은 서버 측에서 관리합니다.
쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 됩니다.
따라서 성능 저하의 원인이 되기도 합니다.
세션의 동작 방식
-
클라이언트가 서버에 접속 시 세션 ID를 발급받습니다.
-
클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있습니다.
-
클라리언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 서버에 전달해서 사용합니다.
-
서버는 세션 ID를 전달받아서 별다른 작업 없이 세션 ID로 세션에 있는 클라이언트 정보를 가져옵니다.
-
클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답합니다.
쿠키와 세션의 차이
저장 위치
쿠키는 로컬에, 세션은 로컬과 서버에 저장됩니다.
보안
쿠키는 탈취와 변조가 가능하지만, 세션은 ID값만 가지고 있고 서버에도 저장이 되어있기 때문에 상대적으로 안전합니다. -> webhack 게임(war게임이라고 하던가요?)에서도 쿠키 탈취 및 변조를 더러 사용합니다.
Lifecycle
쿠키는 브라우저를 종료해도 파일로 남아있지만, 세션은 브라우저 종료 시 세션을 삭제합니다.
속도
세션은 요청마다 서버에서 처리를 해야 하기 때문에 쿠키가 더 빠른 편입니다.
위에서 세션이 쿠키보다 좋다고는 했지만, 세션도 여러 문제점이 있잖아요.
그래서 로드 밸런싱을 하기도 하고 다른 토큰 인증 방식을 사용한다고 합니다.
참고
'web' 카테고리의 다른 글
인터넷 통신 (0) | 2021.03.12 |
---|---|
동기(Synchronous) vs 비동기(Asynchronous) (0) | 2021.03.03 |
[Web] POST 요청 시 한글 깨짐 현상 (0) | 2020.07.19 |
[Web] POST 요청 (0) | 2020.07.19 |
Web(웹)이란? (0) | 2020.06.04 |