Search
Duplicate
📁

⭐ 쿠키는 언제 사용해야할까?

쿠키

먹는 쿠키 아닙니다.
쿠키는 클라이언트-서버 간의 상태 정보를 유지하기 위해 사용되는 작은 데이터 조각이다.
사용자의 웹 브라우저에 저장되며, 서버와의 통신 시 이용된다.
key-value 형태의 데이터로 이루어져 있다

쿠키가 저장되는 위치

쿠키는 주로 사용자의 웹 브라우저에 저장된다. 즉 사용자의 로컬에 저장.
사용자가 특정 웹 사이트를 방문할 때, 그 사이트의 서버는 사용자의 브라우저에 쿠키를 저장하도록 요청할 수 있다.
이때 쿠키는 사용자의 컴퓨터나 모바일 기기의 하드 드라이브에 위치한 브라우저의 특정 디렉토리에 파일 형태로 저장된다.
쿠키에는 방문한 웹 사이트, 쿠키의 만료 기간, 고유 식별자 등의 정보가 포함될 수 있다.
사용자가 동일한 웹 사이트를 재방문할 때, 브라우저는 해당 사이트의 서버에 저장된 쿠키를 전송하여 사용자를 식별하거나 사용자의 선호를 기억하는 데 사용된다.

쿠키는 언제 사용해야 할까?

쿠키는 주로 세션 관리, 사용자 맞춤화, 트래킹 등 다양한 목적에 사용된다.

세션 관리

사용자 인증과 관련된 정보를 유지하기 위해 쿠키를 사용.
사용자가 웹사이트에 로그인할 때 주로 사용된다.

예시

로그인 상태 유지: 사용자가 로그인할 때 서버는 사용자 인증 정보를 세션 쿠키에 저장. 후에 사용자가 페이지를 이동하거나 웹사이트를 다시 방문할 때, 이 쿠키를 통해 로그인 상태를 유지할 수 있다.
장바구니: 전자상거래 사이트에서 사용자가 선택한 상품을 장바구니에 유지하기 위해 쿠키를 사용한다. 사용자가 페이지를 이동하거나 세션이 종료되어도 장바구니에 담긴 상품을 유지할 수 있다.

사용자 맞춤화

사용자 맞춤화는 사용자의 선호도나 설정을 기억하여, 웹사이트를 개인화하는 데 사용.

예시

언어 설정: 사용자가 웹사이트를 방문할 때 선호하는 언어를 선택하면, 그 정보를 쿠키에 저장하여 이후 방문 시 해당 언어로 웹사이트를 표시할 수 있다.
테마: 다크 모드나 라이트 모드와 같은 테마 설정을 쿠키에 저장하여 사용자가 선호하는 테마로 웹사이트를 표시할 수 있다.

트래킹

트래킹은 사용자의 행동을 추적하여 분석하거나 마케팅 목적으로 사용.
주로 광고 네트워크나 분석 도구에서 사용된다.

예시

광고 타겟팅: 사용자가 방문한 페이지와 관심 있는 내용을 추적하여 맞춤형 광고를 제공할 수 있다.
웹사이트 분석: Google Analytics와 같은 도구를 사용하여 사용자의 방문 패턴, 페이지 뷰, 클릭 등 다양한 데이터를 수집하고 분석할 수 있다.

쿠키 특징

작은 데이터 저장소
쿠키는 일반적으로 4KB 이하의 작은 데이터를 저장.
각 쿠키의 크기는 제한되어 있어 중요한 데이터를 저장하기에는 적합하지 않다.
만료 시간 설정
쿠키에는 만료 시간을 설정할 수 있다.
만료 시간이 지나면 브라우저는 자동으로 해당 쿠키를 삭제.
만료 시간이 설정되지 않으면 브라우저 세션이 종료될 때 삭제.
도메인 및 경로 지정
쿠키는 특정 도메인과 경로에 대해 설정할 수 있다.
해당 도메인과 경로에 포함된 페이지를 요청할 때만 쿠키가 전송된다.
이를 통해 쿠키가 불필요한 요청에 포함되지 않도록 할 수 있다.
보안 속성
쿠키는 Secure 플래그와 HttpOnly 플래그를 사용할 수 있다.
Secure 플래그가 설정된 쿠키는 HTTPS 연결에서만 전송된다.
HttpOnly 플래그가 설정된 쿠키는 자바스크립트에서 접근할 수 없어 XSS(교차 사이트 스크립팅) 공격으로부터 보호됨.
읽기 및 쓰기 속성
쿠키는 서버나 클라이언트(웹 브라우저)에서 읽고 쓸 수 있다.
서버에서 설정한 쿠키는 클라이언트가 이후 요청 시 서버로 전송한다.
세션 쿠키와 영구 쿠키
세션 쿠키는 브라우저 세션이 끝나면 삭제되며, 영구 쿠키는 설정된 만료 시간까지 유지된다.
영구 쿠키는 로그인 상태 유지와 같은 장기적인 상태 정보를 저장하는 데 사용된다.

쿠키의 장단점

장점

1.
상태 유지: HTTP는 무상태 프로토콜이므로 쿠키를 사용하여 상태를 유지할 수 있다.
2.
개인화된 경험 제공: 사용자의 선호도와 설정을 기억하여 더 나은 사용자 경험을 제공할 수 있다.
3.
사용자 행동 분석: 사용자의 행동을 분석하여 웹사이트의 개선점을 찾을 수 있다.

단점

1.
보안 문제: 쿠키는 클라이언트 측에 저장되므로 민감한 정보를 저장하기에는 안전하지 않다.
2.
용량 제한: 쿠키는 각 브라우저마다 저장 용량이 제한되어 있어 많은 데이터를 저장하기 어렵다.
3.
사용자 프라이버시: 사용자의 행동을 추적하는 쿠키는 프라이버시 문제를 만들 수 있음.

HTTP Only 쿠키

HTTP Only 쿠키는 웹 서버가 HTTP 응답 헤더를 통해 클라이언트에게 쿠키를 전송할 때, HttpOnly 플래그를 설정함으로써, 해당 쿠키에 대한 클라이언트 측 스크립트 접근을 제한하는 방법이다.
이 플래그가 설정된 쿠키는 JavaScript와 같은 클라이언트 측 스크립트를 통해 직접 접근할 수 없게 되어, 주로 보안을 강화하기 위해 사용된다.

HTTP Only 쿠키의 목적

HTTP Only 쿠키의 주된 목적은 크로스 사이트 스크립팅(XSS) 공격으로부터 사용자의 쿠키 정보를 보호하는 것.
XSS 공격은 공격자가 악의적인 스크립트를 웹 페이지에 삽입하여, 다른 사용자의 브라우저에서 실행되게 만드는 보안 취약점을 이용한 공격
이 스크립트를 통해, 공격자는 사용자의 세션 쿠키를 포함한 민감한 정보를 탈취할 수 있다.
HTTP Only 플래그가 설정된 쿠키는 이러한 스크립트에 의해 접근될 수 없으므로, 사용자의 세션 정보를 보호하는 데 도움이 된다.

HTTP Only 쿠키의 사용

웹 서버는 Set-Cookie HTTP 헤더를 사용하여 클라이언트에 쿠키를 설정할 때, HttpOnly 플래그를 포함시킬 수 있다.
서버가 밑에 처럼 HTTP 헤더를 응답으로 보낼 수 있다
Set-Cookie: sessionId=abc123; HttpOnly
Plain Text
복사
이 설정은 sessionId라는 이름의 쿠키가 생성되어 클라이언트에 저장될 때, 해당 쿠키가 HTTP 요청을 통해서만 서버로 전송될 수 있고, JavaScript와 같은 클라이언트 측 스크립트를 통해서는 접근할 수 없음을 명시.

주의사항

HTTP Only 쿠키는 XSS 공격으로부터 보호할 수 있지만, 모든 종류의 웹 공격을 방지할 수 있는 완벽한 솔루션은 아님.
예를 들어, 크로스 사이트 요청 위조(CSRF)와 같은 다른 유형의 공격에 대해서는 추가적인 보호 조치가 필요하다.
웹 애플리케이션 개발 시, 민감한 정보를 저장하는 쿠키에는 가능한 HttpOnly 플래그를 사용하여 보안을 강화하는 것이 좋음.
HTTP Only 쿠키는 웹 보안 전략의 일부로서 중요한 역할을 수행하며, 사용자의 민감한 정보를 보호하기 위한 효과적인 방법 중 하나이다.

추천 확장프로그램

내가 쓰는 쿠키 확장프로그램
크롬 브라우저 상에서 쿠키를 쉽게 수정,삭제,추가 할 수 있다
사이드 프로젝트할 때도 유용하게 사용함.

번외) 왜 해외 사이트에선 쿠키 허용 유도가 많을까?

스터디 하다가 나온 얘기여서 찾아보니까 해외에서는 정책으로 지정되어 있어서 쿠키를 유도해야 한다.

참고