PHPでCookie保存時にHttpOnly / Secure属性を設定する方法
あるシステムのセキュリティ対策としてCookie保存時にHttpOnly / Secure属性を設定してほしいと要望を受けた。ただ、どちらの属性についても設定したらどうなるのか等、詳細はよく分かっていない。そのためPHPでの設定方法及び各属性についての詳細を以下にメモ。
設定方法
第6引数がSecure属性、第7引数がHttpOnly属性になる。詳細はマニュアル参照。
setcookie('test_key', 'test_val', time()+3600, '/', 'test.com', true, true);
尚、PHP7.3以降の場合は以下のような記述方法も可。
$cookie_options = array( 'expires' => time() + 3600, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, ); setcookie('test_key', 'test_val', $cookie_options);
HttpOnly属性について
HTTPを通してのみCookieにアクセスできるようになり、JavaScriptからはアクセスできなくなる。
Secure属性
HTTPS接続時のみCookieが送信されるようになる。尚、Secure属性をつけている場合、HTTP接続時はCookieの保存もできなかった。
所感
現状大抵のサイトはHTTPS接続可の環境なのでSecure属性の方は問題無さそうだけど、HttpOnly属性の方は「JavaScriptからはアクセスできなくなる」というのがかなり気になるところ。
例えばログイン不要のサイトでお気に入り機能みたいなものを作成する場合、お気に入りに登録したかどうかはCookieに保存することが多い。そのような場合、PHPからもJavaScriptからもCookieを読み込みたいといった状況になるが、その辺りで困ったことになりそう。
関連記事
-
-
composerでライブラリのインストールとインストール時のエラー対応方法
composerでライブラリをインストールする際に「The following ...
-
-
PHPでCannot re-assign auto……のエラー
PHPバージョンアップに伴い「Fatal error: Cannot re-as ...
-
-
複数(PHP / metaタグ / htaccess)の方法で301リダイレクト
サイトのディレクトリやファイル名を大幅に変えるという案件があった。それ自体は問題 ...
-
-
PHPで指定したディレクトリ内のファイルを全てincludeする方法
PHPでライブラリを利用する際にcomposerからインストールしたものは「ve ...
-
-
PHPで複数の画像やテキストファイルをzipファイルとしてダウンロードさせる方法
PHPで画像ファイルやテキストファイルをzip圧縮して、ダウンロードさせたかった ...