Cookie

CGI スクリプトや JavaScript などがローカル PC 上に小容量のデータを記憶できるようにする仕組み。もともとは Netscape Communications が定義した仕様で正式な標準規格にはなっていないが、デファクトスタンダードとしてほとんどのブラウザが組み込んでいる。

仕様概要


Web サーバーからの Cookie の送信


CGI スクリプトなどでブラウザに Cookie を送信する場合は、HTTP 応答に Set-Cookie ヘッダを付加する。書式は以下のとおり。

Set-Cookie: <Cookie名>=<値>[; expires=<有効期限>][; path=<パス名>][; domain=<ドメイン名>][; secure]

Cookie名
設定する Cookie の名前。
設定する Cookie の値。
有効期限
Cookie が削除される日付。日付はstrftime の書式で "%A, %d-%b%Y %H:%M:%S GMT" のように記述する。省略するとセッションの終了時に Cookie が削除される。
パス名
ブラウザがこの Cookie を送信するパス名を指定する。ドメイン名がマッチして、かつパス名以下のページで Cookie が送信される。省略されるとそのページのパスになる。
ドメイン名
ブラウザがこの Cookie を送信するドメイン名を指定する。省略するとそのページのドメイン名になる。
secure
この指定があると、SSL 通信(https:)の場合のみ Cookie が送信される。

ブラウザからの Cookie の送信


HTTP リクエストを送る際、そのページに対応する Cookie をブラウザが保持している場合は自動的に Cookie: ヘッダを付加する。書式は以下のとおり。

Cookie: <Cookie名1>=<値1>[; <Cookie名2>=<値2>...]

httponly (IE の独自拡張)


マイクロソフトの独自拡張ではあるが、 JavaScript による読み出しを禁止して XSS による Cookie の取得を防止する "httponly" という機能がある。以下のように Set-Cookie ヘッダの最後に "httponly" というオプションを指定すると、その CookieJavaScript からアクセスできなくなる。

Set-Cookie: name=value; httponly

サーバーへの送信は通常通り行われるので、 CGI では通常通り使用できる。これにより、不正な JavaScript を利用した Cookie の取得を防止できる。ただし、 XSS によるすべての影響を抑制できるわけではないので、この拡張を利用したとしても XSS 対策は依然として重要である。

詳細は以下のページを参照。

http://msdn.microsoft.com/library/default.asp?url=...

この拡張が動作するのは、 Internet Explorer 6 SP1 以降と Konquerer に限られる。 Firefox では、以下のエクステンションをインストールすることで擬似的にサポートできる。

https://addons.mozilla.org/firefox/3629/

一部のブラウザではクラッシュする場合もあるようなので、使用する場合は影響をしっかりと検討する必要がある。

制限


  • ひとつの Cookie に保存できるのは 4096 バイトまで。
  • ひとつのホストが保存できる Cookie は 20 個まで。
  • トータルで 300 個までしか保存できない。

キーワード



参考


2008年03月30日(日) 23:05:22 Modified by sourcewalker




スマートフォン版で見る

×

この広告は60日間更新がないwikiに表示されております。