티스토리 뷰
쿠키(Cookie)란?
- 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 사용하는 방법입니다.
- 클라이언트(브라우저)에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.
- 웹 서버가 웹 브라우저에게 보내는 데이터중 하나입니다.
- 300개까지 쿠키 저장이 가능하고 하나의 도메인 당 20개의 값만 가질 수 있으며 하나의 쿠키 값은 4KB까지 저장가능합니다.
- 클라이언트 PC의 쿠키 파일에 데이터를 저장하여 웹 페이지들끼리 공유합니다.
- 사용자가 따로 설정하지 않아도 브라우저가 request header에 쿠키를 자동으로 넣어 서버에 전송합니다.
- 클라이언트의 PC에 데이터를 저장하므로 보안에 취약하여, 보안과 무관한경우에 사용합니다.
- 쿠키는 userId=user-1321;userName=sparta 와 같이 문자열 형식으로 존재하며 쿠키 간에는 세미콜론(;) 으로 구분됩니다.
EX) 웹 홈페이지 접속 시 나타나는 팝업창에 대해 ‘오늘 더이상 보지않기’ 에 체크하여 사용할 때 쿠키 이용
쿠키 동작 방식
- 브라우저로 사이트에 접속합니다.(클라이언트가 페이지를 요청)
- 서버가 http headerd에 데이터를 저장한 쿠키를 생성하여 브라우저로 응답합니다.
- 브라우저는 서버에서 받은 쿠키를 쿠키 파일로 저장합니다.
- 여기서 브라우저가 종료 되어도 쿠키의 유효시간이 남아있다면 클라이언트에서 보관하고 있습니다.
- 브라우저로 동일 사이트에 재접속하여 동일한 request가 갈 경우 이미 존재하고 있는 쿠키를 http header로 함께 보냅니다.
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 때 는 쿠키를 업데이트 하여 변경된 쿠키를 http header에 포함시켜 응답합니다.
쿠키의 종류
Persistence 쿠키
- 클라이언트에 파일로 정보저장하여 브라우저를 닫거나 컴퓨터를 재시작하더라도 남아있음.
- 사용자가 만료 시간 지정가능(쿠키를 삭제하거나 유효기간이 만료되면 쿠키 설정값이 종료)
- 최초 접속시 서버로 전송
- 로그인 유무(이미 로그인을 한 유저에게 재로그인 요구x) 또는 팝업창을 제한할 때, 장바구니에 사용.
session 쿠키
- non-persistent cookies 또는 temporary cookies 라고 불림.
- 사이트 탐색 시에 관련한 설정들과 선호사항을 저장하는 임시 쿠키
- 세션(Session)과 같이 사용
- 브라우저가 사용하는 메모리에 생성되며 디스크에는 절대 저장되지 않음
- 브라우저 종료시 자동 소멸
- 최초 접속시 서버로 전송x
- 사이트 접속 시 Session인증 정보를 유지할때(온라인뱅킹 - 사이트나갔다 들어오면 재 로그인)
세션(Session)이란?
- 보안에 취약한 쿠키를 보완해주는 역할을 합니다.
- 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다.
- 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.
- 서버가 돌아가는 서버측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둡니다. 브라우저는 이 키값을 이용하여 서버에 저장된 데이터를 사용합니다.
- 세션기능은 은행이나 공공기관에서 정해진 시간내에 업무를 봐야하는 시간처럼 유효시간이 있는 용도로 쓰일수 있습니다.
세션 동작 방식
- 브라우저로 사이트에 접속합니다.(클라이언트가 페이지를 요청)
- 서버는 접속한 브라우저에 대한 세션 객체를 생성합니다.
- 생성된 세션 ID를 클라이언트 브라우저에 응답합니다.
- 브라우저는 서버로부터 받은 세션 ID를 브라우저가 사용하는 메모리의 세션쿠키에 저장합니다.
- 브라우저가 동일사이트에 재 접속하면 브라우저는 세션쿠키에 저장된 세션 ID를 서버에 전달합니다.
- 서버는 전송된 세션ID를 이용해 해당 세션에 접근하여 작업을 수행합니다.
쿠키와 세션의 차이
구분 | 쿠키 | 세션 |
저장위치 | 클라이언트(로컬) | 서버 |
만료시점 | 쿠키 저장시 설정 (브라우저를 종료해도 만료시점이 지나지 않으면 자동 삭제 되지 않습니다) |
브라우저 종료시 삭제 (기간 별도 지정 가능) |
보안 | 취약, 로컬에 저장되어 탈취, 변조 위험 존재한다. | 서버에 저장되므로 안전하다. |
속도 | 빠르다. | 제공받은 세션아이디를 이용해서 서버에서 다시 데이터를 참조해야 하므로 쿠키보다 비교적 느리다. |
'프로그래밍 기초 > CS' 카테고리의 다른 글
Access Token 과 Refresh Token (0) | 2024.02.16 |
---|---|
JWT란? (0) | 2024.02.14 |
JWT 사용자 인증 미들웨어 (0) | 2024.01.27 |
REST API란? (0) | 2024.01.23 |
웹서버란? (0) | 2024.01.18 |