公開日: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()関数で確認すること。