【Web開発】クッキー(Cookie)

■ クッキー(Cookie)とは

 * ユーザー情報(訪問回数、ユーザーID、パスワードなど)を
   パソコンに一時的に記録したり参照したりする機能
参考文献
http://www.soumu.go.jp/main_sosiki/joho_tsusin/security_previous/kiso/k01_cookie.htm
http://e-words.jp/w/Cookie.html
http://php-web.net/web/cookie.html

■ クッキーの使用目的

 * Webアプリケーション開発者が、クライアントに対して、
   指定したデータを保存させておくことができる
 => それにより、同じ情報を再度入力する不要なオペレーションを省く事ができる
参考文献
http://www.gigafree.net/faq/word/cookie.html

■ クッキーの仕組み

 [1] Webアプリケーションが、HTTPヘッダー内にクッキー「Set-Cookie:」を付与し、
     レスポンスをクライアントに返す
 [2] ブラウザ(クライアント)は、そのクッキーを受け取り、URLとクッキーをひも付けて保持する
 [3] Webアプリケーションに再度アクセスする場合、ブラウザは保持しているクッキーを検索し
     送信先のURLにひも付けられたすべてのクッキー「Cookie:」をHTTPヘッダーに付与して、
     リクエストをWebアプリケーションに送信する
参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20080221/294407/
http://www.itmedia.co.jp/help/howto/security/j05/03.html
http://thinkit.co.jp/free/article/0604/7/8/

■ 属性

secure属性

 * サーバーとの接続がHTTPSの時のみ、Cookie情報が送信される
 * クロス・サイト・スクリプティングセッションハイジャックを回避することができる
 (以下の関連記事を参照のこと)
http://blogs.yahoo.co.jp/dk521123/25278676.html
 * Cookieはセキュア・モードで使用した方がいい。そのために指定する属性。
http://itpro.nikkeibp.co.jp/free/SI/NEWS/20030812/1/
より抜粋

インターネット上での通信が盗聴されてしまうような環境では、
Cookieの暗号化機能(セキュア・モード)を正しく使用しないと、第三者Cookieを盗聴し、
そのCookieを使いユーザーになりすましてアクセスできてしまう

セキュア・モードでない場合、暗号化されていないHTTPのページへのアクセスの際にも送信されてしまうため、
その際に盗聴される恐れがある。 
参考文献
http://www.ipa.go.jp/security/ciadr/20030808cookie-secure.html

expires属性

 * クッキーの有効期限を指定する
参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20080221/294407/

HttpOnly属性

 * WEBサイトを表示する際にしかCookieを扱えないようにする
 => クライアント側のスクリプト(JavaScript等)でアクセスできない様にする
 * クロス・サイト・スクリプティングセッションハイジャックを回避することができる
 (以下の関連記事を参照のこと)
http://blogs.yahoo.co.jp/dk521123/25278676.html
参考文献
http://www.famlog.jp/files/http_cookie_attributes.pdf
Tomcat のセッション ID に HttpOnly 属性と secure 属性を付与する
http://www.websec-room.com/2013/03/01/306

Path属性

 * ブラウザがクッキーを送信するサーバーのパス
 * Path属性を指定すると、クッキーは その値 に含まれるURL又は配下のみ送信する
 * domain属性 のように、クッキーの送信範囲を制御可能(ただし、セキュリティ保護には利用できない)

■ 判定方法

IE

[1][ツール]-[インターネット オプション]を選択
[2][プライバシー]タブをクリックした後、「詳細設定」を選択
[3][自動Cookie処理を上書きする]チェックボックスにチェックを入れ、ファーストパーティのCookieサードパーティCookie「ダイアログを表示する」を選択
[4]「OK」を押下 
参考文献
http://www.artn.co.jp/server/rental_cart/secure_cookie.html

■ 制限

http://atamoco.boy.jp/asp/20110423_1.php
より

 * Cookie の有効・無効の設定はブラウザで行うことができる
 * ブラウザでは 最低 300 個のクッキー(RFC2109 より)
  => これを超えると古い方から削除される
 * 一つのクッキーあたり最低 4096 バイト(RFC2109 より)
 * 個々のホストもしくはドメイン名ごとに最低 20 個のクッキー(RFC2109 より)


関連記事

セキュリティ対策

http://blogs.yahoo.co.jp/dk521123/25278676.html

ASP.NET】クッキー(Cookie

http://blogs.yahoo.co.jp/dk521123/28439642.html

Axis2 で、クライアント・スタブから、Cookie を設定する

http://blogs.yahoo.co.jp/dk521123/33122558.html