SOY Shopのカートではセッションを利用しているわけだけれども、CSRF攻撃対策として、セッションを読み込む度にsession_regenerate_id()を実行して、PHPSESSIDの値を更新している。
先に結論を記載すると、スマホからアクセスがある場合はsession_regenerate_id()の使用を気を付けるべきらしい。
先日、AndroidのChromeでカート内で遷移すると、突然カートの中身が消えるという症状の連絡があった。
調査をしてみると、カートの中身が消えずに注文を終了出来る時もあったり、カートに商品を入れた直後にカートの中身が消えるということもあった。
カートの中身のデータが消えるタイミングがわからず原因を特定する事ができずに2日程経過してしまった。
セッションの仕組みを見直そうと、PHP: session_regenerate_id - Manualのページを読んでみたら、
/******************************/
/******************************/
と記載されていた。
常にsession_regenerate_id()を外すのは怖いので、SOY Shopのカートではスマホでアクセスの時はsession_regenerate_id()を実行しないという処理を追加してみた。
関連記事
SOY CMSでSameSite cookiesの対応を追加しました