勉強したことのメモ

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

  関連記事

smart_resize_imageで縦横の比率関係なく、固定リサイズ

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

PHPでXML形式データをオブジェクト・JSON・連想配列に変換する方法

先日バニラJavaScriptでXML形式データの取り扱いとJSON形式への変換 ...

セレクトメニューとテキストエリアの連動

やりたかった事は、 ・セレクトメニューで何れかを選択すると連動したテキストエリア ...

PHPにてHTML / 画像ファイルをPDFファイル化する方法(mPDF)

PHPにてHTML / 画像ファイルをPDFファイル化したい。検索してみるもサー ...

CodeIgniter3でファイルキャッシュする方法

CodeIgniterでファイルキャッシュが楽に導入できた。そこそこ使いそうなの ...