В новых браузерах при работах с cookies файлами необходимо использовать атрибут SameSite. Данный атрибут предназначен для защиты от подделки межсайтовых запросов (CSRF). С помощью этого атрибута можно запретить браузеру передавать cookies файлы на другие сервера при переходе по ссылкам.
Если на сервере данный атрибут не задается явно, то в браузере в консоли разработчика будем видеть ошибки:
Для куки «XXXXX» не установлено корректное значение атрибута «SameSite». Вскоре куки без атрибута «SameSite» или с некорректным значением этого атрибута будут рассматриваться как «Lax». Это означает, что куки больше не будут отправляться в сторонних контекстах. Если ваше приложение зависит от доступности этих кук в подобных контекстах, добавьте к ним атрибут «SameSite=None». Чтобы узнать больше об атрибуте «SameSite», прочитайте https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite
Пример:
Для решения данной проблемы необходимо заставить сервер устанавливать атрибут SameSite в файлы cookies.
1) В настройках php это прописывается в директиве session.cookie_samesite фаайла php.ini.
# nano /etc/php.ini
; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF)
; Current valid values are "Strict", "Lax" or "None". When using "None",
; make sure to include the quotes, as `none` is interpreted like `false` in ini files.
; https://tools.ietf.org/html/draft-west-first-party-cookies-07
session.cookie_samesite = Lax
2) В коде php это прописывается так:
Пример для php 8.1
setcookie('cookie-name', 'cookie-value',
array('expires' => time() + 86400,
'path' => '/',
'samesite' => 'Lax'));
Пример для php 5.4:
setcookie('cookie-name', 'cookie-value', 0, '/; samesite=Lax ');
Комментариев нет:
Отправить комментарий