【PHP】セッションクッキーの使用をSSL(https)通信時のみに限定する
PHPでセッションを扱う場合、セッションクッキーの作成を常時SSL通信時(https)のみにすることで
非SSL(通信が暗号化されていない)時にセッションIDの情報が盗まれる危険を防ぐ事が出来ます。
セッションクッキーについては下記で紹介しています。
環境:PHP 7.4.4、 Google Chrome バージョン: 83.0.4103.116
セッションクッキーの設定を行う
セッション開始前に以下のどちらかの方法でSSL時のみセッションクッキーを許可するように変更します。
注意
当然、SSL化されていない環境(http)ではセッションが機能しなくなります。
(方法 1.)ini_set関数を使用する
PHPの設定ファイルphp.iniの設定値を上書きするini_set関数で、
「session.cookie_secure」の値を1に変更します。
(セッションを開始するsession_start関数よりも前で実行する)
<?php ini_set("session.cookie_secure", 1); session_start();
php.iniの設定からセッションクッキーに関する設定値を上書きするsession_set_cookie_params関数を使用してsecure項目に該当する第4引数の値へ「true」を指定する。
<?php session_set_cookie_params(0, '', '', true, true); session_start();
session_set_cookie_params関数の詳細について
方法1、2のいずれの設定も恒久的なものではなく、
PHP実行時にセッションを開始する際、つまりブラウザへクッキー送信時に都度設定を行う必要があります。
恒久的な設定を行うことに問題がなければphp.iniへ直接設定を行います。(値を1とする)
php.ini
; http://php.net/session.cookie-secure session.cookie_secure = 1
“【PHP】セッションクッキーの使用をSSL(https)通信時のみに限定する” に対して1件のコメントがあります。
コメントは受け付けていません。