|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
クッキーを書き込むCGIプログラムとクッキーを読み込むCGIプログラムが異なる場合は どうなるのか研究しましょう。 クッキーは誰のもの?という研究です。
クッキーというのは、書き込んだ人しか読めないようなものでなければいけません。 自分が書き込んだクッキーを他の人に読まれてしまったら嫌ですよね? それでは、クッキーというのは誰が読み込めるのでしょうか。 書き込んだCGIプログラムだけが読み込めるのでしょうか、 それとも同じサイトに置かれた他のCGIプログラムでも読み込めるのでしょうか。 その辺を実際に試してみます。
この研究のために必要なのは、クッキーを書き込むCGIプログラムと クッキー読み込むCGIプログラムです。 まず、クッキーを書き込むCGIプログラムで、クッキーを書き込みます。 次に、クッキーを読み込むCGIプログラムで、読み込めるかどうかを確認します。 クッキーを読み込むCGIプログラムは、このサイト内で場所を変えて置いてみて、 サイト内の場所によって読めたり読めなかったりするのか確認してみましょう。
作成するCGIプログラムは、単に「これはクッキーです」という文字列を クッキーとして書き込むものと、クッキーの内容をそのまま画面に表示するものです。
#!/usr/bin/perl print "Content-type: text/html\n"; print "Set-Cookie: これはクッキーです\n"; print "\n"; print "「これはクッキーです」というクッキーを書き込みました。";
#!/usr/bin/perl
print "Content-type: text/html\n";
print "\n";
print "クッキーの内容=$ENV{'HTTP_COOKIE'}";
下のリンクをクリックしてみてください。まずはクッキーを書き込みます。 有効期限は設定していませんので、有効期限はブラウザを閉じるまでになります。
続いて、下のリンクでクッキーの読み込みをテストします。 クッキー読み込みCGIプログラムは、書き込みCGIプログラムと同じディレクトリ、 同じ階層の別のディレクトリ、 上のディレクトリ、下のディレクトリの4箇所に置きました。
結果は次のようなものでした。
| 読み込むCGIプログラムの位置 | クッキー読み込み | |
|---|---|---|
| 書き込んだCGIプログラムの上のディレクトリ | 不可 | |
| 書き込んだCGIプログラムと同じ階層の別のディレクトリ | 不可 | |
| 書き込んだCGIプログラムと同じディレクトリ | 可 | |
| 書き込んだCGIプログラムの下のディレクトリ | 可 |
なるほど〜。書き込んだクッキーを読み込めるのは、 書き込んだCGIプログラムと同じディレクトリか、そのディレクトリより下のディレクトリに置かれた CGIプログラムだけということですね。これなら、 自分が書き込んだクッキーを他のサイトのCGIプログラムに読み込まれてしまったりすることはありません。 同じドメインを複数のユーザーで使っているような場合(~ユーザー名というやつで) でも大丈夫ですね。 これなら安心です! なお、ここでは1階層下のディレクトリしかテストしませんでしたが、 もっと下の階層のディレクトリでも読み込めるようです。
これで疑問が解決しました。スッキリ!
注意しないといけないのは、自分が書き込んだクッキーであっても、 書き込んだCGIプログラムが置かれたディレクトリ以下に置かれたCGIプログラムじゃないと読み込むことが できないという点ですね。
でも、それじゃ困るっていう場合もあるかもしれません。 そんな時のために、クッキーを書き込むときに、そのクッキーを読み込めるCGIプログラムを 指定する機能というのもあるんだそうです。今回研究したのは、 書き込んだクッキーを読み込めるCGIプログラムを指定しなかった場合ということになりますね。
この機能についてはまたいずれ研究することにしましょう。
|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
| Copyright (c) 'PERL-LABO' All Rights Reserved. リンクフリーです。 |