-
CS : Network : 쿠키(cookie), 세션(session)Computer Science/Network 2021. 4. 20. 18:02728x90
쿠키와 세션의 필요성
1.
HTTP 프로토콜의 특징인, connectionless(비연결성)와 stateless(비상태성) 때문이다.
2.
때문에 HTTP 프로토콜은 모든 요청 간 '의존관계'가 없다.
즉, 현재 접속한 client가 이전에 접속한 client와 같은지 다른지 알 수 있는 방법이 없다.
3.
또한, 연결을 유지하지 않는다는 점은 불필요한 리소스(자원)를 낭비하지 않는다는 장점이 있지만, 통신할 때마다 새로 연결되기 때문에, client는 매 요청마다 인증 과정을 거쳐야 한다는 단점이 있다.
4.
HTTP 프토토콜의 상태를 유지할 필요가 생겼고, 이에 쿠키와 세션 개념이 등장했다.
쿠키 (Cookie)
1. 개념
- client의 상태 정보를 브라우저에 저장하여 참조한다.
- name, value 등이 저장되어 있는 하나의 파일이다.
- 브라우저 마다 쿠키가 다르다. 즉 호환이 되지 않는다.
- 때문에, 서버 입장에서는 브라우저가 다르면, 다른 사용자로 인식한다.
2. 구성 요소
- name : 쿠키의 이름
- value : 쿠키의 값
- expires : 쿠키 만료 시간
- domain : 쿠키를 전송할 도메인 이름
- path : 쿠키를 전송할 경로
- secure : 보안 연결 여부
- httponly : httponly 여부
3. 주요 사용 목적
- 세션 관리 : 로그인, 사용자 닉네임, 접속 시간, 장바구니 등 서버가 알아야 할 정보들을 저장한다.
- 개인화 : 사용자마다 다르게 그 사람에게 적절한 페이지를 보여줄 수 있다.
- 트래킹 : 사용자의 행동과 패턴을 분석하고 기록한다.
4. 동작 방식
- 먼저, 웹 브라우저(client)가 서버에 작업을 요청한다.
- 상태를 유지하고 싶은 값에 대해 쿠키(cookie)를 생성한다.
- 서버가 응답할 때, HTTP의 header에 쿠키를 포함하여 전송한다. (Set-Cookie)
- 전달받은 쿠키는 웹 브라우저에서 저장 및 관리되고 있다가, 다음 요청 때 쿠키를 HTTP의 header에 넣어서 서버에 전송한다.
- 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답한다.
5. 쿠키의 단점
- 방문했던 웹 사이트에 대한 정보 및 개인정보가 기록되기 때문에, 사생활 침해 문제가 있다.
- 서버에 저장되는 것이 아닌 웹 브라우저(=client)에 저장되기 때문에, 임의 수정이 가능하고 보안에 취약하다.
세션 (Session)
1. 개념
- 일정 시간동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고, 그 상태를 유지하는 기술
- 즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때까지 유지되는 상태
2. 특징
- Session ID로 구분된다.
- Session ID는 웹 브라우저 당 1개씩 생성되고, 브라우저 종료 시 소멸된다.
- ID, Password 등 필요한 정보를 세션에 담아두면, 요청이 있을 때 마다 DB에 접근할 필요가 없기 때문에 효율적이다.
3. 동작 방식
- 웹 브라우저가 서버에 요청한다.
- 서버가 해당 웹 브라우저(client)에 유일한 ID(=Session ID)를 부여한다.
- 서버가 응답할 때, HTTP의 header 중 Set-Cookie에 Session ID를 포함하여 전송한다.
- 웹 브라우저는 이후, 웹 브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP의 header에 넣어서 전송한다.
- 서버는 Session ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답한다.
4.
세션도 쿠키를 사용하여 값을 주고받는다.
다시 말해, 상태 정보를 유지하는 수단은 '쿠키'이고, 세션은 '쿠키'를 사용하는 또다른 방식이다.
쿠키와 세션 비교
차이점 쿠키 (Cookie) 세션 (Session) 저장 위치 클라이언트 서버 용량 제한 1쿠키 당 4KB 제한 없음 보안 클라이언트에 저장되므로,
약하다.Session ID 값만 가지고 구분하기 때문에,
강하다.라이프 사이클 만료시간에 따라, 브라우저 종료 후에도 남아있을 수 있다. 만료시간과 무관하게, 브라우저 종료 시 삭제된다. 속도 클라이언트에 저장되므로,
빠르다.서버의 별도의 처리가 필요하기 때문에,
느리다.728x90'Computer Science > Network' 카테고리의 다른 글
CS : Network : HTTP (0) 2021.04.20 CS : Network : HTTP 통신 vs Socket 통신 (0) 2021.04.20 CS : Network : OSI 7 Layer (0) 2021.04.20 CS : Network : TCP and UDP (0) 2021.04.20 CS : Network : HTTP 1.1 and 2.0 (0) 2021.04.11