TOP > FAQインデックス > クッキーパスの設定がうまくいかない



≫クッキーパスの設定がうまくいかない

クッキーを保存する際には、クッキーパスを設定します。
クッキーパスを正しく設定しないと、クッキーが漏れる可能性があります。
特に共用サーバでは、クッキー漏れの可能性が高くなります。

例えば、
http://www.sample.com/~abc/
というサイト内でクッキーパスを "/" と設定している場合、
http://www.sample.com/~def/
からでもクッキーを読むことが可能になってしまいます。

この場合は、"/~abc/" とクッキーパスを設定する必要があります。

専用サーバや自宅サーバなら、通常 "/" と設定しても問題ありませんが、クッキーにパスワードなど重要な情報を保存する場合は、クッキーパスの設定を限定的に行った方が良いでしょう。

当サイトで配布しているCGIの中の

$INI{'cookie_path'} = $ENV{'REQUEST_URI'};
$INI{'cookie_path'} =~ s/[^\/]*$//;

というのは、クッキーパスを自動設定する2行です。

多くの場合、この2行で適切にクッキーパスが設定されますが、サーバ環境によっては環境変数 $ENV{'REQUEST_URI'} が設定されない場合があります。
その場合は、

$INI{'cookie_path'} = $ENV{'SCRIPT_NAME'};
$INI{'cookie_path'} =~ s/[^\/]*$//;

を試してみましょう。

それでもだめなら、手動設定をして下さい。

例えば、
http://www.sample.com/~abc/
というサイトURLなら

$INI{'cookie_path'} = "/~abc/";
#$INI{'cookie_path'} =~ s/[^\/]*$//;

となります。

専用サーバや自宅サーバなど、同一ドメイン内に自分ひとりのサーバ環境であれば、ドメインに関わらず

$INI{'cookie_path'} = "/";
#$INI{'cookie_path'} =~ s/[^\/]*$//;

で問題ないと思います。

ただし、
http://www.sample.com/cgi-bin/abc/def.cgi
というCGIでのみそのクッキーを使用するのであれば、

$INI{'cookie_path'} = "/cgi-bin/abc/";
#$INI{'cookie_path'} =~ s/[^\/]*$//;

という風に、限定してやった方がセキュリティは高まるでしょう。

TOP > FAQインデックス > クッキーパスの設定がうまくいかない
(C) bayashi.net