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のセッションでログイン、ログアウトの管理。あとセッションが保存されない場合の対処。
セッションはほとんど使ったことがなく、 色々つまづいたのでメモ。 やりたかった事 ...
-
-
PHPの日付・時刻関連
使えそうなものをまとめてメモ。 【関数】 ----------- ■date 日 ...
-
-
PHP8系からは文字列検索はstrposよりstr_containsが良さそう
PHP8.0のアップデートに関する記事を読んでいたところstr_contains ...
-
-
TCPDF「Could not include font definition」エラーの対処方法
TCPDFでフォントを「arialunicid0」に指定したところ「TCPDF ...
-
-
PHPにてSession発行時に保存されるCookieに対してHttpOnly / Secure属性を設定する方法
先日PHPのsetcookie実行時にHttpOnly / Secure属性を設 ...