D-53
🔍 Cookie
Cookie란 서버가 일방적으로 클라이언트에 영속성이 있는 데이터를 저장하는 방법이다.
Cookie를 사용하는 것은 서버에서 클라이언트에 쿠키를 전송하는 것만 의미하지 않고 클라이언트에서 서버로 쿠키를 다시 전송하는 것도 포함된다.
Cookie는 데이터를 저장한 후 아무때나 데이터를 가져올 수는 없다. 데이터를 저장한 이후 특정 조건이 만족되어야 다시 가져올 수 있기 때문이다.
📌 Cookie 옵션 종류
- Domain : 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키를 전송할 수 있다.
- Path : 세부 경로가 일치하거나 설정된 경로를 포함하는 하위 경로로 요청을 해도 쿠키를 전송할 수 있다.
- MaxAge or Expires : 쿠키에 유효한 기간을 설정해 지정된 시간, 날짜를 초과하면 자동으로 파괴된다. 이는 보안 측면에서 중요하다.
- 세션 쿠키 : 옵션이 없는 쿠키로 브라우저가 실행 중일 때 사용할 수 있는 임시 쿠키로 브라우저 종료시 쿠키도 삭제한다.
- 영속성 쿠키 : 브라우저 종료 여부와 상관없이 설정한 유효한 시간만큼 사용가능한 쿠키다.
- Secure : 사용하는 프로토콜에 따른 쿠키 전송 여부 결정 옵션, true 일 경우 HTTPS를 이용할 때만 쿠키를 전송할 수 있다. 만약 옵션이 없으면 상관없이 모든 쿠키 전송할 수 있다.
- HttpOnly : 스크립트의 쿠키 접근 가능 여부 결정한다. 만약 해당 옵션이 true로 설정된 경우, 자바스크립트로 쿠키에 접근이 불가능하며, 옵션이 없으면 false로 지정 되어 document.cookie 를 이용해 쿠키에 접근할 수 있어 XSS 공격에 취약하다.
- SameSite : CORS(Cross-Site) 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부를 결정한다.
- Cross-Origin : 서버의 도메인, 프로토콜, 포트가 다른 경우 Cross-Origin으로 구분된다.(같은 경우는 Same-Origin)
- SameSite : CORS(Cross-Site) 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부를 결정한다.
- Lax : GET 메서드 요청만 쿠키 전송 가능
- Strict : 쿠키 전송 불가
- None : 모든 메서드 요청에 대해 쿠키 전송 가능
🔍 Cookie 사용 예시
- 자동 로그인 : 쿠키를 통해 로컬에 로그인 정보를 저장하고 서버에 해당 정보를 보내 사용자 인증을 받을 수 있다.
- 하루동안 보지 않기 : 쿠키에 만료일을 설정할 수 있어 해당 정보를 통해 보고싶지 않은 정보를 설정할 수 있다.
- 최근 검색 리스트 : 쿠키를 통해 최근 검색한 정보들을 저장해 사용자에 따라 보여줄 수 있다.
🔍 Cookie 사용 장점
사용자의 정보를 방문 시 저장해 방문마다 확인해야할 번거로운 작업들을 처리할 수 있다.
또 사용자마다 저장하는 정보가 달라 사용자에 맞게 웹사이트의 다크모드, 언어 등을 설정할 수 있다.
웹 사이트를 운영하는 입장에선 사용자가 저장한 쿠키 정보를 이용해 사용자의 행동과 패턴을 분석하고 트래킹 할 수 있다.
🔍 Cookie의 한계
쿠키는 사용자 인증, 검색 기록 등 개인정보를 저장하는 것이기 때문에 사용자의 정보를 침해 당할 수도 있다. 또 이는 사용자 로컬에 저장되는 것이기 때문에 쉽게 조작되거나 가로챌 수 있어 보안이 취약하다.