勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでCookie保存時にSameSite属性を設定する方法

  PHP

あるシステムのセキュリティ対策として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属性の詳細については理解できなかった。

 

参考サイト

https://qiita.com/KWS_0901/items/695bd1ecc17a8c2e6d69

https://web.dev/articles/samesite-cookies-explained?hl=ja

 - PHP

  関連記事

HTMLにてaタグクリック時にping属性のデータをPHPで受け取る方法
HTMLにてaタグクリック時にping属性のデータをPHPで受け取る方法

HTMLのaタグにping属性というものを設定できるらしく、設定したリンクをクリ ...

PHPでCannot re-assign auto……のエラー
PHPでCannot re-assign auto……のエラー

PHPバージョンアップに伴い「Fatal error: Cannot re-as ...

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズ
PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズ

PHPで縦横どちらかが指定の長さを超えた場合、 比率を保ったままリサイズしたかっ ...

PHPのHTTPクライアント用ライブラリ「Guzzle」の利用方法
PHPのHTTPクライアント用ライブラリ「Guzzle」の利用方法

以前に「Requests for PHP」を試したが、似たようなライブラリで「G ...

PHPの日付・時刻関連
PHPの日付・時刻関連

使えそうなものをまとめてメモ。 【関数】 ----------- ■date 日 ...