【PHP】セッションクッキーの使用をSSL(https)通信時のみに限定する

PHPでセッションを扱う場合、セッションクッキーの作成を常時SSL通信時(https)のみにすることで
非SSL(通信が暗号化されていない)時にセッションIDの情報が盗まれる危険を防ぐ事が出来ます。

セッションクッキーについては下記で紹介しています。

【PHP】セッション(session)の基本と利用方法

環境: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();

(方法 2.) session_set_cookie_params関数を使用する

php.iniの設定からセッションクッキーに関する設定値を上書きするsession_set_cookie_params関数を使用してsecure項目に該当する第4引数の値へ「true」を指定する。

<?php

session_set_cookie_params(0, '', '', true, true);

session_start();

session_set_cookie_params関数の詳細について

【PHP】session_set_cookie_params関数でセッションクッキーを安全な設定にする


方法1、2のいずれの設定も恒久的なものではなく、
PHP実行時にセッションを開始する際、つまりブラウザへクッキー送信時に都度設定を行う必要があります。

恒久的な設定を行うことに問題がなければphp.iniへ直接設定を行います。(値を1とする)

php.ini

; http://php.net/session.cookie-secure
session.cookie_secure = 1

Follow me!

【PHP】セッションクッキーの使用をSSL(https)通信時のみに限定する” に対して1件のコメントがあります。

コメントは受け付けていません。