개발 일지/CS

[Web] Cookie

미숫가루설탕많이 2023. 3. 14. 20:45

 쿠키(Cookie)는 클라이언트와 서버 간에 정보를 교환하기 위해 사용되는 작은 텍스트 파일이다. 쿠키는 클라이언트 측에서 저장되며, 클라이언트가 다시 서버로 요청을 보낼 때 함께 전송된다.

 

 쿠키는 이름과 값으로 구성되며, 예를 들어 이름이 'username'이고 값이 'jaeyun'이면 다음과 같이 표현된다.

username=jaeyun

 

 HTTP는 stateless(무상태성)의 특징을 갖고 있는데, 쿠키를 사용하면 사용자의 정보를 기억할 수 있기 때문에 이러한 HTTP의 단점을 해결할 수 있게 된다.

 

 이러한 이유로 쿠키는 웹사이트에서 로그인, 장바구니 등의 기능을 제공하는 데 사용된다.

 

 

 

특징

 

 서버는 쿠키를 이용하여 데이터를 저장하고 원할 때 데이터를 다시 불러와 사용할 수 있다. 하지만 데이터를 저장한 이후 아무 때나 데이터를 가져올 수 없고 데이터를 저장한 이후 특정 조건들이 만족하는 경우에만 다시 가져올 수 있다.

 

 이런 조건들은 다음과 같이 쿠키 옵션으로 표현할 수 있다.

  • Domain
    : 쿠키를 생성한 서버의 도메인이다. 도메인을 설정하면 해당 도메인을 포함한 하위 도메인에서 쿠키를 공유할 수 있다.

  • Path
    : 쿠키가 유효한 디렉토리 경로이다.

  • MaxAge or Expires
    : 쿠키가 유효한 기간을 정하는 옵션이다. MaxAge는 쿠키의 유효 기간을 초 단위로 지정하고 Expires는 특정 날짜를 지정한다. 쿠키는 위 옵션의 여부에 따라 세션 쿠키(Session Cookie)와 영속성 쿠키(Persistent Cookie)로 나뉜다.
    • 세션 쿠키 : MaxAge 또는 Expires 옵션이 없는 쿠키로, 브라우저가 실행 중일 때 사용할 수 있는 임시 쿠키
    • 영속성 쿠키 : 브라우저의 종료 여부와 상관없이 MaxAge 또는 Expires에 지정된 유효시간만큼 사용 가능한 쿠키

  • Secure
    : 쿠키가 HTTPS 프로토콜을 사용하는 경우에만 전송된다.

  • HttpOnly
    : JavaScript를 통한 쿠키 접근을 막는다. 이를 통해 XSS(Cross-Site-Scripting) 공격을 예방할 수 있다.

  • SameSite
    : 해당 쿠키가 생성한 도메인 외부에서의 요청을 차단한다. 이를 통해 CSRF(Cross-Site Request Forgery) 공격을 예방할 수 있다.

 

 

 

 

쿠키를 이용한 상태 유지

 

 쿠키를 이용한 상태 유지는 다음과 같은 방식으로 동작한다.

  1. 사용자가 웹사이트에 접속하여 로그인하면 웹서버는 사용자의 브라우저에 쿠키를 생성한다.
  2. 쿠키에는 로그인 정보나 사용자의 선호 설정 등이 저장되며, 이 정보는 사용자의 브라우저에 저장되기 때문에 사용자가 다시 해당 사이트에 접속할 때마다 서버는 이 쿠키를 참조하여 이전의 상태를 복원할 수 있다.
  3. 사용자가 로그아웃을 하거나 일정 시간이 지나면 서버에서는 해당 쿠키를 삭제하거나 만료시킨다.

 

 이러한 쿠키의 특성을 이용해, 서버는 클라이언트에 인증정보를 담은 쿠키를 전송하고 클라이언트는 전달받은 쿠키를 요청과 같이 전송하여 Stateless한 인터넷 연결을 Stateful하게 유지할 수 있다.

 

 하지만 쿠키는 오랜 시간 유지될 수 있고 자바스크립트를 통해 쿠키에 접근할 수 있기 때문에 개인정보 보호와 관련된 문제에 주의해야 하며, 민감한 정보가 쿠키에 저장되지 않도록 보안 조취를 취해야 한다.

'개발 일지 > CS' 카테고리의 다른 글

[Cloud] Cloud Computing  (0) 2023.03.29
[Web] Session  (0) 2023.03.15
[Web] HTTPS  (0) 2023.03.14
[CS] Hamcrest  (0) 2023.03.06
[CS] DDD  (0) 2023.03.04