小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

HTTP Cookiesとは?

今回、セキュアなWEBの勉強ということで、HTTP Cookieをテストしてみました。
なにを今更…と思っているかもしれませんが、クッキーを知っているつもりでも、実は知らなかったりしますよ。
なのでとりあえず、以下の2つをリンクしときます。

HTTP Cookiesとは?

HTTPだけだとステートレスなので、複数ページに遷移するセッション管理ができません。
そこで、ブラウザ(PC)内にステータスを記憶しておき、その記憶をサーバーとやり取りすれば、セッション管理ができるようになりますね。
その記憶のことをクッキーといいます。


しかし、クッキーはこれだけではないのです。
クッキーの有効期限やクッキーを送り返すURLやドメイン名を指定することができるのです。
特に、URLやドメイン名が指定できるということは、設定したサーバー以外のドメインのサーバーにもクッキーが送れてしまうということなのです。
確かに、この辺は、セッション管理では便利なのですが、反面、悪意のハッカーに狙われるところでもあるのです。


あと、HTTPSで通信する時は、secure属性を必ずつけましょうということです。

クッキーセット

print "Set-Cookie: NAME=値; expires=値; domain=値; path=値; secure \n";
  • NAMEは、NAMEも値も任意です。しかし、『;』と『=』の2つは、すでにデリミタになっているので使用しない。
  • expiresは有効期限 (【例】Fri, DD-Mon-YYYY HH:MM:SS GMT 例)
  • domainは、ドメイン名(【例】www.aaa.co.jp とか .aaa.co.jp)
  • pathは、URLパス(【例】/aaa/bbb)
  • secureは、HTTPSで通信する時は、secure属性つけると暗号化される

クッキーゲット

print "$ENV{'HTTP_COOKIE'}\n";

環境変数 HTTP_COOKIEへ該当するすべてのクッキーが返される。(【例】HIRO=aaa; YASU=bbb;)



今回、クッキーのテストして気がついた点を2つメモしときます。

  • Path属性は、1回でも上位フォルダを設定してしまうと、次回から下位フォルダを指定しても設定できない(上位フォルダ設定のまま)。
  • テスト中に納得がいかない現象に出会ったら、ブラウザを一度閉じ、再度ブラウザを立ち上げてテストをすると、納得がいく結果を得る場合があります。

ちなみに、テスト環境は、クライアントはWindowsXPIE7、サーバーは2台ともWindowsXPでIIS6です。