새소식

프론트엔드 공부/Web Server

쿠키란 무엇일까? 개념, 필요성, 속성, 문제점

  • -

@데브시스터즈 쿠키런

쿠키란 무엇인가요?

쿠키는 인터넷 사용자가 어떤 웹 사이트를 방문할 때 그 사이트에서 사용자의 컴퓨터나 모바일 기기에 저장하는 작은 텍스트 파일입니다. 쿠키는 사용자가 웹 사이트를 방문할 때마다 브라우저가 서버로부터 전송받아 저장합니다. 이후 사용자가 동일한 웹 사이트를 방문할 때마다 쿠키는 해당 웹 사이트에 사용자 정보를 제공하게 됩니다.


쿠키의 역할은 무엇인가요?

@RyanGomdoriPooh 쿠키와 세션의 차이

쿠키는 웹 사이트에서 사용자 정보를 저장하고, 다음에 해당 웹 사이트를 방문할 때 사용자 정보를 불러와 편리한 이용을 제공합니다. 예를 들어, 웹 사이트에서 로그인을 할 때 사용자 정보를 저장하여 사용자가 로그인을 다시 하지 않아도 되도록 합니다. 또한 쿠키는 사용자가 웹 사이트에서 설정한 언어, 테마, 글꼴 등의 환경 설정 정보를 저장하여 사용자가 웹 사이트를 이용하는데 더욱 편리하게 합니다.


쿠키의 종류는 무엇이 있나요?

쿠키는 세션 쿠키와 지속 쿠키로 나뉩니다. 세션 쿠키는 사용자가 웹 사이트를 이용하는 동안에만 유지되는 쿠키로, 사용자가 브라우저를 종료하면 삭제됩니다. 지속 쿠키는 사용자가 웹 사이트를 이용하는 동안 유지되는 쿠키로, 사용자가 브라우저를 종료해도 삭제되지 않고 사용자가 직접 삭제하지 않는 한 웹 사이트를 방문할 때마다 유지됩니다.

세션 쿠키
Expires와 Max-Age 두가지 속성이 정의되지 않는 쿠키를 세션 쿠키라고 합니다. 세션 쿠키는 현재 브라우저의 세션이 끝날 때 삭제되는 쿠키입니다. 크롬 브라우저에서 크롬을 종료한 후에도 세션 쿠키가 남아 있는 이슈가 있는데, 백그라운드에서 동작하고 있는 크롬 프로세스를 모두 종료해야 세션 쿠키가 삭제됩니다.

 


쿠키의 속성

속성 설명
라이프타임 Max-Age 쿠키가 유효한 기간을 초 단위로 지정합니다.
Expires 쿠키의 만료 시간을 날짜 형식으로 지정합니다.
스코프 Domain 쿠키가 유효한 도메인을 지정합니다.
Path 쿠키가 전송될 경로를 지정합니다.
보안 HttpOnly JavaScript를 통한 쿠키 접근을 금지합니다.
Secure HTTPS 프로토콜로 요청이 이루어진 경우에만 쿠키를 보낼 수 있습니다.
SameSite 교차 사이트 요청 시 쿠키를 보낼 시기를 제어합니다.

라이프 타임 속성

라이프 타임 속성 중 Expires와 Max-Age 속성은 각각 쿠키가 만료되는 시간을 설정할 수 있습니다. Expires는 날짜를 지정하여 쿠키가 삭제되는 날짜를 설정하며, Max-Age는 초 단위로 유효 시간을 설정합니다. 두 속성이 함께 지정된 경우, Max-Age 속성이 우선됩니다.

Expires

Expires 속성을 사용하면 속성에 정의된 날짜에 삭제되는 쿠키를 만듭니다. 사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; Expires=Sun, 29 Aug 2021 12:00:00 GMT;

Max-Age

Max-Age 속성을 사용하면 속성에 정의된 기간 이후에 삭제되는 쿠키를 만듭니다. 사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; Max-Age=600;

Max-Age 속성은 초 단위를 사용합니다. 위의 코드는 10분 동안 유지되는 쿠키입니다. 음수가 지정되면 해당 쿠키는 즉시 만료됩니다. 

보안 속성

보안 속성 중 Secure, HttpOnly, SameSite 속성은 쿠키 보안을 강화합니다. Secure 속성을 사용하면 HTTPS 요청일 경우에만 쿠키를 전송하고, HttpOnly 속성은 XSS 공격을 방어하여 자바스크립트의 document.cookie API로 쿠키에 접근하는 것을 막습니다. SameSite 속성은 XSRF 공격을 방어하여 설정된 사이트에서만 쿠키를 전송하도록 제한합니다.

Secure

Secure 속성이 정의 된 쿠키는 HTTPS 요청일 경우에만 쿠키를 전송합니다. Secure 속성을 사용했더라도 민감한 정보는 쿠키에 담지 않는 것이 좋습니다. 사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; Secure;

HttpOnly

XSS 공격을 방어하기 위해 HttpOnly 속성이 정의 된 쿠키는 자바스크립트의 document.cookie API를 통해 접근할 수 없습니다. HttpOnly 쿠키는 서버에 전송하는 용도로만 사용할 수 있습니다. 사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; HttpOnly;

SameSite

XSRF 공격을 방어하기 위해 SameSite 속성을 사용할 수 있습니다. SameSite 속성은 None, Lax, Static 중 하나를 설정할 수 있습니다.

  • None: SameSite 속성이 등장하기 전에 동작하던 쿠키 방식입니다. None으로 설정된 쿠키는 크로스 사이트 요청에도 항상 전송됩니다. 즉 A 사이트에서 설정된 쿠키가 B 사이트에서 발생하는 요청에도 쿠키가 전달됩니다.
  • Lax: 웹 페이지 이동과 안전한 HTTP 메서드 요청의 경우 쿠키를 전송합니다. <a href>, <link href> , <form method=get>에서는 쿠키가 전송됩니다.
  • Static: Strict로 설정된 쿠키는 Lax에서 허용한 몇 가지 예외를 포함하여 모든 크로스 사이트 요청에 쿠키를 전송하지 않습니다.

사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; SameSite=Lax;

스코프 속성

스코프 속성 중 Domain과 Path 속성은 쿠키의 유효 범위를 설정합니다. Domain 속성은 쿠키가 전송되는 호스트를 지정하며, Path 속성은 쿠키가 전송되는 디렉토리를 지정합니다. 쿠키의 기본 값은 현재 서버 주소이며, 서브 도메인은 포함되지 않습니다.

Domain

Domain 속성에는 쿠키가 전송되게 될 호스트가 정의됩니다. Domain 속성에 정의 된 URL에 쿠키가 전송됩니다. 사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; Domain=beomy.io;

위의 코드의 Domain=beomy.io와 같이 Domain이 정의되면 쿠키들은 sub.beomy.io, domain.beomy.io와 같은 서브 도메인에서도 쿠키가 포함되어 전송됩니다.

Domain이 정의 되어 있지 않으면 현재 서버 주소가 기본 값으로 설정되며, Domain을 정의한 쿠키와 달리 서브 도메인은 포함되지 않습니다.

Path

Domain 속성은 쿠키의 도메인의 유효 범위를 지정한다면, Path 속성은 쿠키의 디렉토리의 유효 범위를 지정합니다. 사용 방법은 아래 코드와 같습니다.

Set-Cookie: id=cookieman; Path=/cookie;

위의 코드처럼 Path=/cookie로 Path 속성을 지정하면 /cookie, /cookie/path, /cookie/domain와 같은 서브 디렉토리에서 쿠키가 포함되어 전송됩니다.


쿠키 문제점은 무엇인가요?

 

쿠키는 사용자의 브라우저에 저장되기 때문에 보안에 취약합니다. 쿠키가 탈취되면 개인정보 유출이 가능해지며, 해커들이 쿠키를 이용해 사용자를 사칭할 수도 있습니다.

또한 쿠키를 이용한 추적도 문제가 됩니다. 웹사이트에서 쿠키를 사용하면 사용자의 웹 활동 기록이 추적되어 다른 웹사이트에서도 이를 이용할 수 있습니다. 이러한 문제점을 해결하기 위해 보안 강화를 위한 쿠키 설정 및 대안인 웹 스토리지 등이 사용되고 있습니다.

따라서 쿠키는 웹 사이트 이용의 편리함을 제공하는 동시에 개인정보 보호에 대한 문제점을 안고 있습니다.


쿠키 사용을 제어하는 방법은?

쿠키의 사용을 제어하는 방법에는 브라우저 설정을 이용하는 방법과 쿠키 관리 프로그램을 이용하는 방법이 있습니다.

브라우저 설정을 이용한 방법은 각 브라우저마다 다소 차이가 있지만, 대체로 브라우저 설정에서 쿠키의 저장 및 삭제를 수동으로 조절할 수 있습니다. 또한, 브라우저의 쿠키를 차단하거나 특정 사이트의 쿠키만 허용하는 등의 설정도 가능합니다.

쿠키 관리 프로그램은 사용자가 직접 다운로드하여 설치하는 프로그램으로, 쿠키를 관리하고 삭제하는 기능을 제공합니다. 이 방법은 브라우저 설정을 변경하는 것보다 더욱 철저한 쿠키 관리를 가능하게 합니다.

마지막으로, 쿠키를 이용하는 웹 사이트는 개인정보 처리 방침을 반드시 명시해야 합니다. 개인정보 처리 방침을 확인하여 사용자의 개인정보가 어떤 용도로 수집, 이용되는지를 파악하고, 필요에 따라 쿠키를 차단하는 것이 좋습니다.

요약하자면, 쿠키는 웹 사이트 이용의 편리함을 제공하는 동시에 개인정보 보호에 대한 문제점을 안고 있습니다. 사용자는 브라우저 설정을 이용하거나 쿠키 관리 프로그램을 이용하여 쿠키를 제어할 수 있으며, 웹 사이트 이용 전 개인정보 처리 방침을 반드시 확인하는 것이 좋습니다.


읽어보면 좋은 곳

 

How to Set and Get Cookies in Node.js Express Server | WM

A cookie is a piece of information stored in the browser. You will learn how to set, get, or clear cookies in a Node.js Express server with a secure flag.

www.webmound.com

 

'프론트엔드 공부 > Web Server' 카테고리의 다른 글

Hashing  (0) 2023.03.08
세션(블로깅중)  (0) 2023.03.07
[Web Server] 기초 종합퀴즈  (0) 2023.02.08
StatesAirline Server  (0) 2023.02.08
Mini Node Server  (0) 2023.02.06
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.