ここ最近クッキーが消えてしまう掲示板が多く見られるようで、2000
年対応の為に一次休止するフリー掲示板サービスなんかもあるようで
す。全部が全部そうではないと思いますが、これは恐らくクッキーの
破棄日時(expire time)の計算ミスが原因と思われます。通常 Perl
や C で組んだ CGI では内部的には時間を UTC で扱い、また文字で
扱う場合は年号4桁が基本なのですが、どうやらクッキーで Expired
の指定をする時に旧式の年号2桁で GMT を指定している CGI も多い
ようなのです。
例えばクッキーの情報を30日間保有させたい場合、秒数で現在日時に
30*24*60*60 の値を加えたものを、英語(的な)表記の年月日時分秒
表記に直してから、クッキーに保有期限を指定します。ここで、年号
が2桁で指定されている場合…。仮に12月2日にアクセスしたとすると
破棄日時は2000年1月1日になる筈です。しかし2桁指定の場合、00年
は1900年と認識される為、指定の日時は過去のものとなります。する
と、次回ブラウザを起動した時、既に破棄予定日時を過ぎたと見なさ
れ、見事クッキーの情報は消えてしまいます。
よく見かける mini BBS シリーズもこの問題を抱えているようです。
勿論新しい版にはないようですが、他にもこの問題を抱えている CGI
は思ったより多いようですね。
過去の経緯から幾つもの表記をフォローせざるを得ない状態が続いて
おり、RFC でも規定されていることから、この2桁年号の表記が未だ
残っている為に起こった問題と言えます。
これとは別に、32ビットのコンピュータ(unix 等)には、2038年問題
があります。詳しくは面倒なので省略しますが、以下の UTC 日付にな
ると、1970年1月1日の00:00:00にリセットされてしまうんですね…。
Tuesday January 19 03:14:07 UTC 2038
文責:やむ(やみ)