Ostrzeżenie SameSite Chrome 77

168

Od ostatniej aktualizacji mam błąd związany z plikami cookie związanymi z atrybutem SameSite.

Pliki cookie pochodzą od zewnętrznych programistów (Fontawesome, jQuery, Google Analytics, Google reCaptcha, Google Fonts itp.)

Błędy w konsoli Chrome są takie.

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.

Czy jest coś, co muszę zrobić na moim lokalnym komputerze lub serwerze, czy jest to tylko funkcja, którą powinni wdrożyć w przyszłych wydaniach swoich bibliotek?

peiblox
źródło
9
nie ma nic wspólnego z twoim kodem. jest to coś, co ich serwery będą musiały obsługiwać.
Daniel A. White
Mam ten sam problem. Czy to oznacza, że ​​nie możemy używać stron internetowych innych firm w naszym kodzie?
Love2Code,
1
Z bibliotek można korzystać bez problemu. To tylko ostrzeżenie, które konsola wyśle, dopóki nie zaimplementują tego na swoich serwerach, jak powiedział wcześniej Daniel @.
peiblox,
9
A co dokładnie się stanie, jeśli strona trzecia nie naprawi plików cookie do dnia, w którym A future release of Chrome will only deliver ... - moja witryna się zepsuje? Wygląda na to, że przyszła data to 02.04.2020 - niezbyt daleko.
JK.
1
Jak wspomniano @ DanielA.White, należy to naprawić w kodzie strony trzeciej, zobacz tę odpowiedź, aby uzyskać więcej kontekstu.
Hooman Bahreini

Odpowiedzi:

141

To ostrzeżenie konsoli nie jest błędem ani faktycznym problemem - Chrome rozpowszechnia informacje o tym nowym standardzie, aby zwiększyć popularność programistów.

Nie ma to nic wspólnego z twoim kodem. Jest to coś, co ich serwery będą musiały obsługiwać.

Data wydania poprawki to 4 lutego 2020 r. Na: https://www.chromium.org/updates/same-site

Luty 2020: Wdrażanie wymuszania dla Chrome 80 Stabilny: Domyślnie SameSite i SameSite = Brak wymaganego bezpieczeństwa Bezpieczne zaczną być wdrażane w Chrome 80 Stabilny dla początkowej ograniczonej populacji od tygodnia 17 lutego 2020 , z wyłączeniem Święto Prezydenta USA w poniedziałek. Będziemy ściśle monitorować i oceniać wpływ na ekosystem od początkowej ograniczonej fazy poprzez stopniowe zwiększanie wdrożeń.

Pełny harmonogram udostępniania Chrome znajduje się tutaj .

Rozwiązałem ten sam problem, dodając nagłówek odpowiedzi

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

SameSiteuniemożliwia przeglądarce wysyłanie pliku cookie wraz z żądaniami z różnych witryn. Głównym celem jest ograniczenie ryzyka wycieku informacji pochodzących z różnych źródeł. Zapewnia również pewną ochronę przed atakami fałszowania żądań w różnych witrynach. Możliwe wartości flagi to Lax lub Strict.

Pliki cookie SameSite wyjaśnione tutaj

Proszę zapoznać się z tym przed zastosowaniem dowolnej opcji.

Mam nadzieję, że to ci pomoże.

Rahul Mahadik
źródło
39
Czy przeprowadziłeś jakieś badania, w jaki sposób można sobie z tym poradzić, pobierając zewnętrzne skrypty ustawiające pliki cookie (takie jak Google Analytics i Google Tag Manager)?
Mosiądz
26
gdzie powinienem dodać nagłówek odpowiedzi? dzięki.
Kris Wen
2
Jeśli korzystasz z platformy .NET, dołączenie pliku web.config lub dodanie reguł ReWrite adresu URL w usługach IIS rozwiązałoby ten problem. Kredyt trafia do rozwiązania na stackoverflow.com/questions/38954821/...
BDarley
3
Czy istnieje rozwiązanie, które nie wymaga JavaScript?
posfan12
11
Muszę powiedzieć, że przyjazne ostrzeżenie naprawdę wyzwala OCD wielu programistów takich jak ja. Moja frustracja z powodu brudnej konsoli znacznie wzrasta, gdy widzę YouTube, usługę Google, przestępcę generującego błędy konsoli w Google Chrome. Tak właśnie mówiłem.
Marc
22

Jeśli testujesz na localhost i nie masz kontroli nad nagłówkami odpowiedzi, możesz to wyłączyć za pomocą flagi chrome.

Odwiedź adres URL i wyłącz go: chrome: // flags / # same-site-by-default-cookies SameSite Domyślnie zrzut ekranu plików cookie

Muszę ją wyłączyć, ponieważ Chrome Canary właśnie zaczął wymuszać tę regułę od około V 82.0.4078.2, a teraz nie ustawia tych plików cookie.

Uwaga: tę flagę włączam tylko w przeglądarce Chrome Canary, której używam do programowania. Najlepiej nie włączać flagi podczas codziennego przeglądania Chrome z tych samych powodów, dla których Google ją wprowadza.

Będzie
źródło
1
Wyłączenie tej flagi i ponowne uruchomienie kanarka nie działało dla mnie, więc właśnie dodałem -SameSitedo głównego pola „Filtr”, którego użyłem również do usunięcia tego irytującego problemu sourcemap => superuser.com/questions/1523427/...
Avolition
4

Aby rozwinąć odpowiedź Rahula Mahadika, działa to dla 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
    {
    }

lub

    public class UserController : Controller
    {
        [AllowSameSite] //For the method
        public ActionResult Index()
        {
            return View();
        }
    }
Joel Wiklund
źródło
Czy możesz spojrzeć na mój kod. Jest to również powiązane z polityką CORS przez chrome. stackoverflow.com/questions/60556740/…
Abhay salvi
4

Naprawiono przez dodanie crossorigin do znacznika skryptu.

Od: https://code.jquery.com/

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

Atrybuty integralności i crossorigin są używane do sprawdzania integralności podrzędnych zasobów (SRI). Pozwala to przeglądarkom upewnić się, że zasoby hostowane na serwerach innych firm nie zostały zmienione. Zaleca się stosowanie SRI jako najlepszej praktyki, ilekroć biblioteki są ładowane ze źródła zewnętrznego. Czytaj więcej na srihash.org

John Magnolia
źródło
srihash.org mówi Niestety nie znamy tej domeny.
Vlad
Gdzie znajdę tag skryptu? Czy to jest w pliku web.config?
CarlD
1
@ CarlD z komunikatu o błędzie znajdź skrypt powodujący błąd, a następnie przejrzyj źródło html strony
John Magnolia
@JohnMagnolia Właśnie to zrobiłem i nic się nie stało.
CarlD