SMART LLC

セッションクッキーを守る方法

公開日:2014/10/27

Apache×PHPの環境でクッキーに2つの属性を付与してセッションIDを守る方法をメモする。

secure属性

ひとつはsession.cookie_secure(secure属性)
SSL通信でのみクッキーがやりとりされるようになる。
SSLページで使用したクッキーが非SSLページで盗聴されるのを防ぐ効果がある。
非SSLページでもクッキーを使用することがある場合はクッキーを別に用意してプログラム内で個別に設定することになるのかな。
このホームページは常時SSLを採用してるのでクッキーも必ずsecure属性でOK。
正直常時SSLの場合は意味ないかもしれないけど一応。

httponly属性

もうひとつはsession.cookie_httponly(httponly属性)
SSL通信だけなのかhttpだけなのかどっちやねんてつっこみたくなる。
JavaScriptでクッキーにアクセスすることはできませんよて意味だった。
クロスサイトスクリプティング(XSS)攻撃を防ぐ効果がある。
これもクロスサイトスクリプティング(XSS)攻撃対策してる場合には意味ないかもしれないけど一応。

Apache×PHP

ApacheモジュールとしてPHPを実行している場合を参考にした。
レンタルサーバの場合にはphp.iniもhttpd.confもさわれないので今回も.htaccessに追記することになる。
.htaccessにPHPの設定を記述する場合は設定値が論理型(on|off)ならphp_flagディレクティブ、それ以外ならphp_valueディレクティブを使えば良さそう。
今回設定するsession.cookie_secureとsession.cookie_httponlyはどちらも論理型なのでphp_flagディレクティブを使う。

すごく簡単だった。

<IfModule mod_php5.c>
	php_flag session.cookie_httponly on
	php_flag session.cookie_secure on
</IfModule>

設定した後はphpinfo()関数で確認すること。

SHARE