SameSite предупреждение Chrome 77

168

Со времени последнего обновления у меня возникла ошибка с файлами cookie, связанная с атрибутом SameSite.

Файлы cookie принадлежат сторонним разработчикам (Fontawesome, jQuery, Google Analytics, Google reCaptcha, Google Fonts и т. Д.).

Ошибки в консоли Chrome такие.

A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
(index):1 A cookie associated with a cross-site resource at http://jquery.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at http://fontawesome.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at http://google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at https://google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at https://www.google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at http://www.google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.
(index):1 A cookie associated with a cross-site resource at http://gstatic.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.

Есть ли что-то, что мне нужно сделать на моей локальной машине или сервере, или это просто какая-то функция, которую они должны реализовать в будущих выпусках своих библиотек?

peiblox
источник
9
ничего общего с вашим кодом. Это то, что их веб-серверы должны будут поддерживать.
Дэниел А. Уайт
У меня та же проблема, означает ли это, что мы не можем использовать сторонние сайты в нашем коде?
Love2Code
1
Вы можете использовать библиотеки без каких-либо проблем. Это всего лишь предупреждение, которое консоль будет выдавать, пока они не реализуют это на своих серверах, как @ DanielA.White говорил ранее.
peiblox
9
И что именно произойдет, если третьи лица не исправят свои куки-файлы к дате, A future release of Chrome will only deliver ... когда мой сайт сломается? Похоже, эта будущая дата 02/04/2020 - не слишком далеко.
JK.
1
Как упомянуто @ DanielA.White, это нужно исправить в стороннем коде, см. Этот ответ для большего контекста.
Хуман Бахрейни

Ответы:

142

Это предупреждение консоли не является ошибкой или фактической проблемой - Chrome просто распространяет информацию об этом новом стандарте, чтобы повысить популярность среди разработчиков.

Это не имеет ничего общего с вашим кодом. Это то, что их веб-серверы должны будут поддерживать.

Дата выпуска исправления - 4 февраля 2020 года по адресу : https://www.chromium.org/updates/same-site.

Февраль 2020 г .: развертывание Enforcement для Chrome 80 Stable: поведения SameSite по умолчанию и SameSite = None-require-Secure начнут переходить на Chrome 80 Stable для первоначального ограниченного числа пользователей, начиная с недели 17 февраля 2020 г. , исключая Празднование Дня Президента США в понедельник. Мы будем внимательно следить и оценивать воздействие на экосистему с этого начального ограниченного этапа посредством постепенного увеличения развертывания.

Полный график выпуска Chrome см. Здесь .

Я решил ту же проблему, добавив в заголовок ответа

response.setHeader("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");

SameSiteзапрещает браузеру отправлять cookie вместе с межсайтовыми запросами. Основная цель - снижение риска утечки информации из разных источников. Он также обеспечивает некоторую защиту от атак подделки межсайтовых запросов. Возможные значения для флага: Lax или Strict.

Файлы cookie SameSite объяснены здесь

Пожалуйста, ознакомьтесь с этим перед применением любой опции.

Надеюсь, это поможет вам.

Рахул Махадик
источник
39
Провели ли вы какие-либо исследования того, как это можно сделать при извлечении сценариев сторонних производителей, которые устанавливают файлы cookie (например, Google Analytics и Google Tag Manager)?
BRass
26
где я должен добавить заголовок ответа? Спасибо.
Крис Вен
2
Если вы используете .NET, то добавление web.config или добавление правил перезаписи URL в IIS решит эту проблему. Кредит идет на решение в stackoverflow.com/questions/38954821/…
BDarley
3
Есть ли решение, которое не включает JavaScript?
posfan12
11
Я должен сказать, что дружеское предупреждение действительно вызывает OCD многих разработчиков, как я. Мое разочарование в связи с грязной консолью значительно возрастает, когда я вижу YouTube, собственность Google, правонарушителя, генерирующего ошибки консоли в Google Chrome. Именно об этом я и говорил.
Марк
22

Если вы тестируете на локальном хосте и не можете контролировать заголовки ответа, вы можете отключить его с помощью хромированного флага.

Посетите URL и отключите его: chrome: // flags / # same-site-by-default-cookies SameSite по умолчанию скриншот куки

Мне нужно отключить его, потому что Chrome Canary только что начал применять это правило примерно с версии 82.0.4078.2, и теперь он не устанавливает эти куки.

Примечание. Этот флаг включен только в Chrome Canary, который я использую для разработки. Лучше не включать флаг для повседневного просмотра Chrome по тем же причинам, по которым Google представляет его.

Будет
источник
1
Отключение этого флага и повторный запуск канарейки у меня не сработали, поэтому я просто добавил -SameSiteв главное окно «Фильтр», которое я также использовал, чтобы удалить эту надоедливую проблему с исходной картой => superuser.com/questions/1523427/…
Avolition
4

Чтобы развить ответ Рахула Махадика, это работает для MVC5 C # .NET:

AllowSameSiteAttribute.cs

public class AllowSameSiteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var response = filterContext.RequestContext.HttpContext.Response;

        if(response != null)
        {
            response.AddHeader("Set-Cookie", "HttpOnly;Secure;SameSite=Strict");
            //Add more headers...
        }

        base.OnActionExecuting(filterContext);
    }
}

HomeController.cs

    [AllowSameSite] //For the whole controller
    public class UserController : Controller
    {
    }

или

    public class UserController : Controller
    {
        [AllowSameSite] //For the method
        public ActionResult Index()
        {
            return View();
        }
    }
Джоэл Виклунд
источник
Можете ли вы посмотреть на мой код. Это также связано с политикой CORS от Chrome. stackoverflow.com/questions/60556740/…
Абхай Салви
4

Исправлено добавлением кроссоригина в тег скрипта.

От: https://code.jquery.com/

<script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>

Атрибуты целостности и перекрестного происхождения используются для проверки целостности субресурсов (SRI). Это позволяет браузерам гарантировать, что ресурсы, размещенные на сторонних серверах, не были подделаны. Рекомендуется использовать SRI, когда библиотеки загружаются из сторонних источников. Узнайте больше на srihash.org

Джон Магнолия
источник
srihash.org говорит, к сожалению, мы не знаем этого домена.
Влад
Где я могу найти тег сценария? Это в web.config?
Карл
1
@CarlD из сообщения об ошибке найдите, какой скрипт вызывает ошибку, затем просмотрите html-источник веб-страницы
Джон Магнолия
@JohnMagnolia Я только что сделал, и ничего не случилось.
Карл