Drop the SameSite attribute from the XSRF-Token cookie to work around WebKit Bug...
authorTim Düsterhus <duesterhus@woltlab.com>
Wed, 10 May 2023 13:25:38 +0000 (15:25 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Wed, 10 May 2023 13:25:38 +0000 (15:25 +0200)
commit832de3617df81b357430f8d99527dc34efd277a7
tree5a3dfe01082274641f91c07108bf3fda3d47711e
parentd0349cd263b4076157f9d6764438027b38b60d90
Drop the SameSite attribute from the XSRF-Token cookie to work around WebKit Bug 255524

It appears that Safari 16.4+ sometimes loses SameSite cookies without explicit
expiry when performing subrequests, e.g. to load JavaScript or when using
`fetch()`. The conditions apply to the XSRF-Token cookie. Now if one of the
subrequests hits the application, the application will hand out a fresh
XSRF-Token cookie, due to the cookie being missing. This results in spurious
changes of the XSRF-Token and thus error messages for the user.

According to comments in the WebKit Bug a workaround for the issue is not
providing a SameSite attribute at all and we leverage this workaround for the
time being: The SameSite attribute on the XSRF-Token cookie is a defense in
depth measure.

see https://bugs.webkit.org/show_bug.cgi?id=255524
see https://www.woltlab.com/community/thread/299769-fehlerhafter-xsrf-token/
wcfsetup/install/files/lib/system/session/SessionHandler.class.php