среда, 19 октября 2022 г.

Исправление ошибки в браузере: не установлено корректное значение атрибута «SameSite»

В новых браузерах при работах с 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 ');




Комментариев нет:

Отправить комментарий