HTTP 쿠키

위키百科, 우리 모두의 百科事典.

HTTP 쿠키 ( HTTP cookie )란 웹 서버 에 依해 使用者의 컴퓨터에 貯藏되는, '이름을 가진 작은 크기의 데이터 '이다. 인터넷 使用者가 어떠한 웹사이트를 訪問할 境遇 使用者의 웹 브라우저를 통해 인터넷 使用者의 컴퓨터나 다른 機器에 設置되는 작은 記錄 情報 파일을 일컫는다. [1] 쿠키 , 웹 쿠키 , 브라우저 쿠키 라고도 한다. 이 記錄 파일에 담긴 情報는 인터넷 使用者가 같은 웹사이트를 訪問할 때마다 읽히고 隨時로 새로운 情報로 바뀐다. 이 手段은 넷스케이프 의 프로그램 開發者였던 壘 몬툴리 가 考案한 뒤로 오늘날 많은 서버 및 웹사이트들이 브라우저의 迅速性을 위해 즐겨 쓰고 있다. [2]

쿠키는 소프트웨어가 아니다. 쿠키는 컴퓨터 內에서 프로그램처럼 實行될 수 없으며 바이러스를 옮길 수도, 惡性코드를 設置할 수도 없다. 하지만 스파이웨어 를 통해 유저의 브라雨徵 行動을 追跡하는데에 使用될 수 있고, 누군가의 쿠키를 훔쳐서 該當 使用者의 웹 計定 接近權限을 獲得할 수도 있다.

背景 [ 編輯 ]

HTTP 쿠키는 著名한 구운 間食과 같은 이름을 共有한다.

이름의 起源 [ 編輯 ]

"쿠키"라는 用語는 웹 브라우저 프로그래머 壘 몬툴리 가 만들어냈다. 이는 유닉스 프로그래머들이 使用한, 프로그램이 受信 後 變更하지 않은 채로 返還하는 데이터의 패킷을 意味하는 매직 쿠키 라는 用語에서 비롯된 것이다. [3] [4]

歷史 [ 編輯 ]

매직 쿠키는 壘 몬툴리가 1994年 6月 웹 通信에서 이것들을 使用하겠다는 생각을 했을 때 컴퓨팅에 이미 使用되고 있었다. [5] 當時 그는 넷스케이프 커뮤니케이션스 의 職員이었으며 MCI 를 위한 電子 商去來 애플리케이션을 開發하고 있었다. 빈트 서프 존 클렌新 은 넷스케이프 커뮤니케이션스와의 技術 討論에서 MCI를 提示했다. MCI는 서버가 部分的인 트랜잭션 狀態를 保有하는 것을 願치 않았으나 이러한 理由로 이들은 넷스케이프에게 各 使用者의 컴퓨터의 狀態를 貯藏하는 方法을 講究할 것을 代身 要請하였다. 쿠키는 假想 쇼핑 카트 를 信賴性있게 具現할 때의 問題의 解決策을 提供하였다. [6] [7]

救助 [ 編輯 ]

쿠키는 다음의 要素로 構成된다: [8] [9]

  1. 이름
  2. 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]

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. “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 .  
  2. Schwartz, John (2001年 9月 4日). “Giving Web a Memory Cost Its Users Privacy” . 《The New York Times》 (美國 英語). ISSN   0362-4331 . 2020年 7月 16日에 確認함 .  
  3. “Where cookie comes from :: DominoPower” . 《dominopower.com》 . 2017年 10月 19日에 確認함 .  
  4. Raymond, Eric (ed.). “magic cookie” . 《The Jargon File (version 4.4.7)》 . 2017年 9月 8日에 確認함 .  
  5. Schwartz, John (2001年 9月 4日). “Giving Web a Memory Cost Its Users Privacy” . 《The New York Times》.  
  6. Kesan, Jey; and Shah, Rajiv ; Deconstructing Code , SSRN.com, chapter II.B (Netscape's cookies), Yale Journal of Law and Technology, 6, 277?389
  7. 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] )
  8. Peng, Weihong; Cisna, Jennifer (2000). “HTTP Cookies, A Promising Technology”. 《Proquest》. Online Information Review. ProQuest   194487945 .   |id= 에 templatestyles stripmarker가 있음(위치 1) ( 도움말 );
  9. Jim Manico quoting Daniel Stenberg, Real world cookie length limits 保管됨 2013-07-02 - 웨이백 머신
  10. IETF HTTP State Management Mechanism, Apr, 2011 Obsoletes RFC 2965
  11. “Persistent client state HTTP cookies: Preliminary specification” . Netscape. c. 1999. 2007年 8月 5日에 原本 文書 에서 保存된 文書.  
  12. “Cookie Property” . 《MSDN》. Microsoft. 2008年 4月 5日에 原本 文書 에서 保存된 文書 . 2009年 1月 4日에 確認함 .  
  13. 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