クッキー (Cookie)

クッキー とは

クッキー (Cookie) とは,HTTP における Web ブラウザと Web サーバとの間で状態を管理するプロトコル,ならびにそこで用いられる Web ブラウザに保存された情報のことです.一般に,サーバ側でユーザ識別やセッション管理を実現する目的に利用されます.

クッキーは,訪れた Web サイトによって作成されてユーザのコンピュータに保存される小さな情報ファイルです.ファイルの格納形式は,ブラウザにより異なっています.

クッキーには,ユーザの使用する言語やログイン情報(身元確認可能な個人情報を含む)など,Web サーバが利用するのための幅広い情報が保存されます.再びそのサイトを訪れた場合,ユーザの要求に応じた情報をサイトが提供できるようにブラウザによってそのサイトに属するクッキーが送信されます. このとき,プライバシーに関わる情報が含まれている場合など,セキュリティ上の問題を発生させる可能性があります.

HTTP クッキーの仕様は,次の RFC 資料で規定されています.

 RFC 6265, "HTTP State Management Mechanism", 2011.4

クッキーの用途

HTTP は,元来ハイパーテキストにおいて単にファイル転送を行うために開発されたため,同じ URL へのアクセスならその状況によらず同一の資源を提供することが前提となっています.すなわち,HTTP では同じ瞬間に同じ内容の要求を行っていれば,そのクライアントが以前にどのような通信を行っていても区別されません.HTTP はその意味で"状態"を持たないプロトコルです.

クッキーが必要となった理由は,この HTTP では“状態”を保持できないという性質です.インターネットの普及に伴い,様々な場面で Web(すなわちHTTP)が利用されるようになるにつれて,“状態”を保持したいというニーズが出てきました.そこで,「Web ブラウザが Web サーバから受け取った“状態”の情報をファイルに保存しておき,次回 Web サーバと交信する時に Web ブラウザがそれを Web サーバに送り返す」というクッキー の技術が導入されました.

クッキー の代表的な利用方法は,次のようなものです.

クッキー の動作

クッキー は,基本的には,Set-Cookie と Cookie という2種類の HTTPヘッダのやりとりで状態を管理します. まず,サーバが Set-Cookie というヘッダを発行し,Set-Cookieヘッダを受け取ったクライアントは,送り返す条件に一致したクッキーについては,リクエストメッセージと共に Cookie というヘッダを発行します.

  1. Web サーバが,

    Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure

    という形式の HTTPヘッダ (NAME=VALUEのみ必須) を含めて,レスポンスを返す.
  2. ブラウザが,この値を URL と関連付けて保持する.
  3. 次にアクセスする場合,ブラウザは保持しているクッキーを検索し,送信先の URL に関連付けられたすべてのクッキーを

    Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...

    という形式の HTTPヘッダに含めて,リクエストを送信する.

ブラウザからクッキーが送信される条件は,Set-Cookie で設定された次の cookie 属性により決定されます.

セキュリティ問題

クッキーは,ユーザの情報をサーバに送信する意味からセキュリティ問題とも関係してきます.特に,ユーザの明示的な指示なしに,ブラウザのデフォルトな動作としてクッキーを送ることがあります.

クッキー 利用上の注意

inserted by FC2 system