技術書出版と販売のラムダノートから米内貴志著 Webブラウザセキュリティ - Webアプリケーションの安全性を支える仕組みを整理するが出版されていたので、Webブラウザ自身のセキュリティ対策の事はほとんど触れた事がなかったので良い機会と思い購入して読んでみた。


この本を読んでみて、目から鱗だったのが、クロスサイトリクエストフォージェリを回避する方法を探るの記事で触れたCSRF攻撃をブラウザの機能の活用でも回避を強化出来ることで、cookieを利用をプロトコルレベルで制限出来る事を知った。


PHPでは、cookieを利用する箇所は意図的にsetcookieを実行する箇所と、session_start関数を実行する時で、SOY CMSやSOY Shopでは管理画面ログイン、カート周りの処理とマイページの自動ログインが該当し、PHP7.3以降であれば、SameSite cookieの設定を追加出来るらしいので対応してみた。

SameSite cookies - HTTP | MDN

PHP: setcookie - Manual

PHP: session_set_cookie_params - Manual


実際に行った事は、SOY Shopのショップサイトに限って話をすると、ショップサイトにHTTPSでアクセスした時のみ、




cookieの保持で、HttpOnly属性とSecure属性をtrueにし、SameSite属性の値をLaxにする。

※上記の属性値の詳細を知りたい場合は下記のリンクをご覧ください。

Set-Cookie - HTTP | MDN


今回の対応に合わせて、cookieが関与するデータベーススキーマの見直しと、ショップサイトのマイページにログインしていない時に無駄な処理が発生していた箇所を最適化して表示速度の高速化を行っています。

SOY Shopのデータベースのインデックスの見直しで運営の限界を上げる


今回対応分を含んだパッケージは下記のサイトからダウンロード出来ます。

https://saitodev.co/soycms/