今回はPHPでセッション管理をおこなう際に気をつけることの一つとして、CookieにSecure属性を付ける設定方法について紹介する。

Secure属性の必要性

SSL対応(https:)されたサイトでは基本的に設定するべきで、Secure属性のついたCookieは非SSL(http:)サイトには送信されないようになる。

セキュリティ上、特に扱いに気をつけなければならないセッションIDを格納したCookieについては、IPAが発行している「安全なウェブサイトの作り方」でもSecure属性を付与することが推奨されている。

安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構

PHPコード内での設定方法

php.iniファイルでも設定をおこなうことができるが、レンタルサーバーなどではphp.iniを編集できないことが多いので、ここではPHPコード内でSecure属性を設定する方法を紹介する。

<?php 
ini_set('session.cookie_secure', 1); 
session_start();

ini_set関数を使い、session.cookie_secureに1を設定するだけでCookieにSecure属性を付与することができる。

なお、注意点としてこの設定は必ずsession_start関数の前におこなわなければいけない。

ChromeのデベロッパーツールからApplicationタブを選択して確認すると、以下矢印で示すとおり、Secureの欄にチェックが入っていることが分かる。