HTTP 쿠키
(
HTTP cookie
)란
웹 서버
에 依해 使用者의 컴퓨터에 貯藏되는, '이름을 가진 작은 크기의
데이터
'이다.
인터넷
使用者가 어떠한 웹사이트를 訪問할 境遇 使用者의 웹 브라우저를 통해 인터넷 使用者의 컴퓨터나 다른 機器에 設置되는 작은 記錄 情報 파일을 일컫는다.
[1]
쿠키
,
웹 쿠키
,
브라우저 쿠키
라고도 한다. 이 記錄 파일에 담긴 情報는 인터넷 使用者가 같은 웹사이트를 訪問할 때마다 읽히고 隨時로 새로운 情報로 바뀐다. 이 手段은
넷스케이프
의 프로그램 開發者였던
壘 몬툴리
가 考案한 뒤로 오늘날 많은 서버 및 웹사이트들이 브라우저의 迅速性을 위해 즐겨 쓰고 있다.
[2]
쿠키는 소프트웨어가 아니다. 쿠키는 컴퓨터 內에서 프로그램처럼 實行될 수 없으며 바이러스를 옮길 수도, 惡性코드를 設置할 수도 없다. 하지만
스파이웨어
를 통해 유저의 브라雨徵 行動을 追跡하는데에 使用될 수 있고, 누군가의 쿠키를 훔쳐서 該當 使用者의 웹 計定 接近權限을 獲得할 수도 있다.
背景
[
編輯
]
이름의 起源
[
編輯
]
"쿠키"라는 用語는 웹 브라우저 프로그래머
壘 몬툴리
가 만들어냈다. 이는
유닉스
프로그래머들이 使用한, 프로그램이 受信 後 變更하지 않은 채로 返還하는 데이터의 패킷을 意味하는
매직 쿠키
라는 用語에서 비롯된 것이다.
[3]
[4]
歷史
[
編輯
]
매직 쿠키는 壘 몬툴리가 1994年 6月 웹 通信에서 이것들을 使用하겠다는 생각을 했을 때 컴퓨팅에 이미 使用되고 있었다.
[5]
當時 그는
넷스케이프 커뮤니케이션스
의 職員이었으며
MCI
를 위한
電子 商去來
애플리케이션을 開發하고 있었다.
빈트 서프
와
존 클렌新
은 넷스케이프 커뮤니케이션스와의 技術 討論에서 MCI를 提示했다. MCI는 서버가 部分的인 트랜잭션 狀態를 保有하는 것을 願치 않았으나 이러한 理由로 이들은 넷스케이프에게 各 使用者의 컴퓨터의 狀態를 貯藏하는 方法을 講究할 것을 代身 要請하였다. 쿠키는
假想 쇼핑 카트
를 信賴性있게 具現할 때의 問題의 解決策을 提供하였다.
[6]
[7]
救助
[
編輯
]
쿠키는 다음의 要素로 構成된다:
[8]
[9]
- 이름
- 값
- 0個 以上의 屬性 (
이름/값 雙
). 屬性은 쿠키의 滿了 期間, 도메인, 플래그(예:
Secure
및
HttpOnly
) 等의 情報를 貯藏한다.
具現
[
編輯
]
쿠키는 任意 彫刻의 데이터로서, 웹 브라우저에 依해 選別되어 처음 送信되며 웹 브라우저에 依해 클라이언트 컴퓨터에 貯藏된다. 以後 브라우저는 狀態(以前 이벤트 記憶)를 무狀態
HTTP
트랜잭션으로 流入시키면서 모든 要請을 서버로 되돌려 보낸다. 쿠키가 없으면
웹 페이지
의 各各의 檢索 또는 웹 페이지의 構成 要素가, 大體的으로 웹사이트上에서 使用者가 만드는 다른 모든 페이지와 無關한 別個의 이벤트로 取扱된다. 쿠키가 一般的으로 웹 서버에 依해 設定되지만
자바스크립트
와 같은 스크립트 言語를 使用하여 클라이언트에 依해 設定이 可能하다.(스크립트 言語에 依해 쿠키를 修正하지 못하게 하는 쿠키의 HttpOnly 플래그가 設定되어 있지 않는 境遇에 한해)
쿠키 仕樣
[10]
[11]
은 쿠키 支援을 위해 브라우저가 다음의 要件을 充足할 것을 明示한다.
- 4,096바이트 크기의 쿠키를 支援할 것
- 한 도메인 黨 最小 50個 쿠키를 支援할 것(예: 各 웹사이트 黨)
- 總 最少 3,000個 쿠키를 支援할 것.
쿠키 설정
[
編輯
]
쿠키는
Set-Cookie
HTTP 헤더
를 使用하여 設定되며 이는 웹 서버의 HTTP 應答을 통해 送信된다. 이 헤더는 웹 브라우저가 쿠키를 貯藏하고 이를 次期 서버 要請 時 送信할지를 指示한다. (브라우저는 쿠키가 未支援이거나 非活性化되어 있을 境遇 이 헤더를 無視한다)
한 例로 브라우저는
www.example.org
웹사이트 홈페이지의 最初 要請을 送信한다:
GET
/index.html
HTTP
/
1.1
Host
:
www.example.org
...
서버는 2個의
Set-Cookie
헤더와 함께 應答한다:
서버의 HTTP 應答에는 웹사이트의 홈페이지 內容이 包含된다. 그러나 이는 브라우저가 2個의 쿠키를 設定할 것 또한 指示한다. 처음 theme은 세션 쿠키로 看做되는데 이는
Expires
또는
Max-Age
屬性이 存在하지 않기 때문이다. 세션 쿠키는 브라우저가 닫힐 때 브라우저에 依해 削除되는 構造이다. 두 番째 sessionToken은 永久 쿠키로 看做되는데 브라우저가 特定 날짜와 時間에 削除하도록 指示하는
Expires
屬性을 包含하기 때문이다.
그 다음 브라우저는 웹사이트에서
spec.html
를 訪問하기 위해 다른 要請을 보낸다. 이 要請은
Cookie
HTTP 헤더가 包含되어 있으며 이는 서버가 브라우저에 設定을 指示하는 2個의 쿠키를 담고 있다:
GET
/spec.html
HTTP
/
1.1
Host
:
www.example.org
Cookie
:
theme=light; sessionToken=abc123
…
이러한 方式으로, 서버는 이 要請이 以前 것과 關聯되어 있는지를 認知하게 된다. 서버는 要請된 페이지를 送信함으로써 應答하며 여기에는 새 쿠키 追加, 旣存 쿠키 修正, 쿠키 削除를 爲해 應答에 더 많은
Set-Cookie
헤더를 包含할 수 있다.
쿠키 값은 페이지 要請에 應答하여
Set-Cookie
헤더를 包含시킴으로써 서버에 依해 修正이 可能하다. 브라우저는 以後 오래된 값을 새로운 값으로 置換한다.
쿠키의 값은
,
와
;
,
空白 文字
를 除外한 印刷 可能한 모든
ASCII
文字(
!
에서
~
까지,
유니코드
\u0021
에서
\u007E
까지)로 構成될 수 있다. 쿠키의 이름은
=
및 同一 文字를 除外하는데, 그 理由는 이름과 값 사이를 區別하는 구분자 役割을 하기 때문이다. 쿠키 標準 RFC 2965는 더 制約이 있으나 브라우저에 依해 具現되지는 않는다.
쿠키 크럼(cookie crumb)이라는 用語는 쿠키의 이름-값 雙을 의미하기 위해 使用되기도 한다.
[12]
쿠키는 브라우저 內에서 實行되는
자바스크립트
와 같은 스크립트 言語에 依해 設定할 수도 있다. 자바스크립트에서
document.cookie
客體는 이 目的을 위해 使用된다. 이를테면
document.cookie = "temperature=20"
는 temperature의 쿠키 이름과 값 20을 만든다.
[13]
같이 보기
[
編輯
]
各州
[
編輯
]
- ↑
“Design & Implementation of License-based Digital Rights Management System”
. 《The KIPS Transactions:PartC》
11C
(1): 55?62. 2004年 2月 1日.
doi
:
10.3745/kipstc.2004.11c.1.055
.
ISSN
1598-2858
.
- ↑
Schwartz, John (2001年 9月 4日).
“Giving Web a Memory Cost Its Users Privacy”
. 《The New York Times》 (美國 英語).
ISSN
0362-4331
. 2020年 7月 16日에 確認함
.
- ↑
“Where cookie comes from :: DominoPower”
. 《dominopower.com》
. 2017年 10月 19日에 確認함
.
- ↑
Raymond, Eric (ed.).
“magic cookie”
. 《The Jargon File (version 4.4.7)》
. 2017年 9月 8日에 確認함
.
- ↑
Schwartz, John (2001年 9月 4日).
“Giving Web a Memory Cost Its Users Privacy”
. 《The New York Times》.
- ↑
Kesan, Jey; and Shah, Rajiv ;
Deconstructing Code
, SSRN.com, chapter II.B (Netscape's cookies), Yale Journal of Law and Technology, 6, 277?389
- ↑
Kristol, David;
HTTP Cookies: Standards, privacy, and politics
, ACM Transactions on Internet Technology, 1(2), 151?198, 2001
doi
10.1145/502152.502153
(an expanded version is freely available at
arXiv:cs/0105018v1 [cs.SE]
)
- ↑
Peng, Weihong; Cisna, Jennifer (2000). “HTTP Cookies, A Promising Technology”. 《Proquest》. Online Information Review.
ProQuest
194487945
.
- ↑
Jim Manico quoting Daniel Stenberg,
Real world cookie length limits
保管됨
2013-07-02 -
웨이백 머신
- ↑
IETF
HTTP State Management Mechanism, Apr, 2011
Obsoletes
RFC 2965
- ↑
“Persistent client state HTTP cookies: Preliminary specification”
. Netscape. c. 1999. 2007年 8月 5日에
原本 文書
에서 保存된 文書.
- ↑
“Cookie Property”
. 《MSDN》. Microsoft. 2008年 4月 5日에
原本 文書
에서 保存된 文書
. 2009年 1月 4日에 確認함
.
- ↑
Shannon, Ross (2007年 2月 26日).
“Cookies, Set and retrieve information about your readers”
. HTMLSource. 2011年 8月 26日에
原本 文書
에서 保存된 文書
. 2009年 1月 4日에 確認함
.
外部 링크
[
編輯
]
- RFC 6265
, the current official specification for HTTP cookies
|
---|
|
|
|
|
|
- 別表(*)로 된 部分은 더 以上 開發 中이 아닌 소프트웨어를 意味
|