ChromeS 77 попередження від SameSite


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.

Чи потрібно щось робити на своїй локальній машині чи сервері чи це лише якась функція, яку вони повинні реалізувати у майбутніх випусках своїх бібліотек?


9
нічого спільного з вашим кодом. їх веб-сервери повинні підтримувати.
Даніель А. Уайт

У мене така ж проблема, чи це означає, що ми не можемо використовувати сторонні веб-сайти в нашому коді?
Love2Code

1
Ви можете користуватися бібліотеками без проблем. Це лише попередження, яке консоль буде кидати, поки вони не реалізують це на своїх серверах, як говорив @ DanielA.White раніше.
peiblox

9
І що саме станеться, якщо третя сторона не виправить свої файли cookie до дати, що A future release of Chrome will only deliver ... - мій сайт зламається? Схоже, що майбутня дата - 02.04.2020 - не надто далеко.
Ж.К.

1
Як згадував @ DanielA.White, це потрібно зафіксувати в коді третьої сторони, див. Цю відповідь для подальшого контексту.
Хоман Бахрейні

Відповіді:


141

Це попередження консолі не є помилкою чи фактичною проблемою - Chrome просто поширює слово про цей новий стандарт, щоб збільшити прийняття розробника.

Це не має нічого спільного з вашим кодом. Це те , що їх веб - сервери повинні підтримувати.

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

Лютий, 2020 р.: Запровадження правоохоронних систем для Chrome 80 Stable: Посібник SameSite за замовчуванням і SameSite = Поведінки не вимагає надійності розпочнеться до Chrome 80 Stable для початкової обмеженої кількості населення, починаючи з тижня 17 лютого 2020 року Свято Президента США у понеділок. Ми будемо ретельно відстежувати та оцінювати вплив екосистеми з цієї початкової обмеженої фази шляхом поступового нарощування впровадження

Повний графік випуску Chrome див. Тут .

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

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

SameSiteне дозволяє браузеру надсилати файли cookie разом із запитами між веб-сайтами. Головною метою є зменшення ризику витоку інформації з походженням. Він також забезпечує певний захист від атак підробки між веб-сайтами. Можливі значення для прапора - Lax або Strict.

SameSite печиво пояснив тут

Будь ласка, зверніться до цього, перш ніж застосовувати будь-яку опцію.

Сподіваюся, що це вам допоможе.


39
Чи проводили ви якісь дослідження щодо того, як це можна впоратися, перетягуючи сторонні сценарії, які встановлюють файли cookie (наприклад, Google Analytics та Менеджер тегів Google)?
БРас

26
куди слід додати заголовок відповіді? Дякую.
Кріс Вень

2
Якщо ви користуєтесь .NET, додавання web.config або додавання правил перезапису URL-адреси в IIS дозволить вирішити цю проблему. Заслуга до розчину при stackoverflow.com/questions/38954821 / ...
BDarley

3
Чи є рішення, яке не передбачає JavaScript?
posfan12

11
Треба сказати, що дружнє попередження справді спрацьовує OCD багатьох розробників, як я. Моє розчарування на брудній консолі значно зростає, коли я бачу YouTube, власність Google, правопорушник, який генерує помилки консолі в Google Chrome. Це я вже говорив.
Марк

22

Якщо ви тестуєте на localhost і у вас немає контролю над заголовками відповідей, ви можете відключити його за допомогою хромованого прапора.

Відвідайте URL-адресу та відключіть її: chrome: // flags / # same-site-by-default-cookies Скріншот файлів cookie від SameSite за замовчуванням

Мені потрібно відключити його, оскільки Chrome Canary тільки почав застосовувати це правило приблизно з V 82.0.4078.2, і тепер він не встановлює ці файли cookie.

Примітка. Цей прапор увімкнено лише в Chrome Canary, який я використовую для розробки. Краще не вмикати прапор для щоденного перегляду Chrome із тих же причин, що Google представляє його.


1
Вимкнення цього прапора та відновлення канарки не допомогли мені, тому я просто додав -SameSiteдо головного поля "Фільтр", яке я також використав, щоб видалити цю докучливу проблему
вихідної карти

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. stackoverflow.com/questions/60556740 / ...
Абхай Salvi

4

Виправлено шляхом додавання до тегу сценарію crossorigin.

Від: 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?
CarlD

1
@CarlD з повідомлення про помилку знайдіть, який скрипт викликає помилку, тоді перегляньте html-джерело веб-сторінки
Джон Магнолія

@JohnMagnolia Я просто так і нічого не сталося.
CarlD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.