쿠키(Cookie)
- 쿠키란?
- 사용자가 임의의 웹사이트를 방문할 경우 웹브라우저를 통해 사용자의 컴퓨터에 저장되는 작은 기록파일을 말한다.
- 상태를 저장하기 위해 사용
- 사용자에 의해 HTTP요청이 발생하면 웹브라우저는 쿠키를 웹사이트에 같이 전송해준다.
2. 쿠키는 어디에 저장되는가?
- 쿠키는 웹사이트를 접속한 사용자의 디바이스(휴대폰, 테블릿, PC 등)에 저장된다.
3. 쿠키의 동작원리
→ 쿠키의 동작원리 예시이다.
- 사용자가 자신의 컴퓨터를 이용해 브라우저에 주소를 치면 브라우저에 주소를 입력한다.
- 브라우저는 그 요청받은 주소에 해당하는 웹서버에 데이터를 요청한다.
- 웹서버는 응답헤더에 쿠키를 설정하라는 명령을 내린다.
- 브라우저는 먼저 요청받은 데이터를 사용자에게 전달한다.
- 브라우저는 이후 응답헤더의 Set-Cookie 명령에 의해 로컬 디바이스의 특정위치에 쿠키를 파일 조각의 형태로 저장을 한다. 쿠키는 Key-Value 쌍으로 이루어져 있다.
- 이후 사용자가 버튼을 클릭하여 두 번째 요청이 브라우저에게 요청한다.
- 요청전 로컬 디바이스의 쿠키저장소에서 쿠키를 찾는다.
- 브라우저는 찾은 쿠키와 함께 리퀘스트 헤더에 쿠키를 담아 보낸다.
- 쿠키 속성
- Name
- : 쿠키를 구분하는 유일 식별자
- Value
- : 쿠키의 값이 저장되어 있다.
- Domain
- : 브라우저가 웹서버로 쿠키를 전송할 때 해당 도메인과 일치하는 요청에 대해서만 쿠키를 전송한다.
- Path
- : 브라우저가 웹 서버로 쿠키를 전송할 때 해당 경로와 일치하는 쿠키만 전송한다.
- Expires/ Max-Age
- : 사용자가 다시 웹서버에 요청하지 않는 한 쿠키를 제어 할 수 없기 때문에 쿠키의 만료기한을 지정한다.
- Size
- : 쿠키의 크기
- HttpOnly
- : 오직 HTTP의 응답헤더로만 쿠키 설정이 가능하다. 자바스크립트나 다른 접근 방식으로 쿠키의 값을 변경하거나 조회할 수 없다는 것이다.
- Secure
- : Https 통신일 경우에만 쿠키를 전송한다.
세션(Session)
- 세션이란?
- 세션은 일정 기간 동안 같은 클라이언트로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다.
- 일정 시간 : 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료함으로써 연결을 끝내는 시점
- 클라이언트와 서버 간의 연결 상태
- 세션 동작 과정
- 클라이언트가 웹사이트에 접속해 서버에 요청한다.
- 서버는 접속한 클라이언트에게 세션ID를 부여해 응답한다.
- 클라이언트는 해당 세션 ID를 헤더 쿠키에 넣어 데이터를 요청한다.
- 서버는 세션ID를 통해 클라이언트를 구별하여 데이터를 알맞게 응답한다.
- 클라이언트가 접속을 종료한다.
- 서버는 세션 ID를 제거한다.
- 세션 장점
- 접속이 끊김과 동시에 사용자를 구별하는 세션ID가 제거되기 때문에 보안상 훨씬 안전하다.
- 쿠키는 실제 로컬에 사용자 정보가 저장이 되어 보안이 취약.
쿠키와 세션의 차이
- 쿠키는 클라이언트에 저장되지만, 세션은 서버에 저장된다.
- 세션은 서버에 저장되므로 서버의 자원을 사용하지만, 쿠키는 클라이언트에 저장되므로 서버의 자원을 사용하지 않는다는 이점이 있다.
- 서버에 요청을 보내는 사용자가 많을 경우 세션은 부하가 심할 수 있다.
- 세션은 쿠키를 이용해 쿠키에 세션ID만 저장하고 서버에서 세션을 처리하기 때문에 비교적 보안성이 좋다.
- 쿠키는 만료시간 동안 파일로 저장되므로 브라우저를 종료해도 정보가 남아있지만 세션은 브라우저가 종료되면 만료시간에 상관없이 삭제된다.
[Reference]
'네트워크' 카테고리의 다른 글
HTTP 1.1과 HTTP 2.0 (0) | 2024.09.19 |
---|---|
Web Server, Apache, Nginx (0) | 2024.07.30 |
비연결성과 비상태성 (1) | 2023.09.30 |