PHPでCookie保存時にSameSite属性を設定する方法
あるシステムのセキュリティ対策としてCookie保存時にSameSite属性をStrictに設定してほしいと要望を受けた。ただ、SameSite属性について聞いたことが無く、設定方法や設定するとどうなるのかが分からなかった。そのためPHPでの設定方法及び属性についての詳細を以下にメモ。
設定方法
ソースコード
コメントにもある通りsamesite属性は「None」「Lax」「Strict」が指定可能。ちなみに指定しなかった場合は「None」になるみたい。
$cookie_options = array(
'expires' => time() + 3600,
'path' => '/',
'domain' => '',
'secure' => true,
'httponly' => true,
'samesite' => 'Strict' //None or Lax or Strict
);
setcookie('test_key', 'test_val', $cookie_options);
注意点
マニュアルの変更履歴にもある通りSameSite属性はPHP7.3からサポートされたとのこと。7.3より前のバージョンの場合は上記方法では設定できない点に注意すること。
SameSite属性について
CSRF対策のための属性となり、別ドメインに対してのCookieの送信の振る舞いについての設定項目とのこと。
「None」「Lax」「Strict」はセキュリティレベルとなり、「None」は制限なし、「Lax」は多少制限あり、「Strict」が一番制限が厳しい設定となる。
所感
Cookieを別ドメインに対して送信する、という部分のイメージが掴めないため、イマイチSameSite属性の詳細については理解できなかった。
参考サイト
関連記事
-
-
PHPで定義済みの変数 / 定数とincludeしているファイル一覧を取得する方法
他社が作成されたPHPのファイルを読み解く際に、定義済みの変数 / 定数や、in ...
-
-
CodeIgniter4&Bootstrap&jQueryで簡易版お問い合わせページの作成
CodeIgniter4.4.4&Bootstrap&jQuer ...
-
-
file_get_contentsを使用する際にタイムアウト設定
20秒に1回自動でリロードするページにて file_get_contentsを使 ...
-
-
mysqldumpが使えないレンタルサーバでMySQLのバックアップ
mysqldumpが使えないレンタルサーバで開発を行うことがあり、尚且つ他社に使 ...
-
-
数値を3桁とかでカンマ区切りにする
見たこと無い関数が業務中にあったのでメモ。 number_format ■参考サ ...