Safari nie wysyła plików cookie nawet po ustawieniu SameSite = None; Bezpieczne

13

Nasza aplikacja korzysta z plików cookie w celu zapamiętania loginu użytkownika. Przy każdym wywołaniu API autoryzacji przeglądarka dołącza ustawiony na serwerze plik cookie HTTP tylko z żądaniem interfejsu API i zostaje uwierzytelniona. To zachowanie wydaje się być zepsute podczas safari po wydaniu Mojave.

Czytałem o bezpieczeństwie plików cookie między witrynami wdrożonym przez safari, a nasz zespół serwerów dodał SameSite=None;Securepodczas ustawiania pliku cookie. Nawet po tym nadal nie działa.

Set-Cookie: my_cookie=XXXXX; path=/; secure; HttpOnly; SameSite=None

Proszę doradzić lub podać linki od osób, które faktycznie znalazły rozwiązanie.

DieOnTime
źródło

Odpowiedzi:

15

Błąd dotyczy wersji Safari na MacOS 10.14 i wszystkich przeglądarkach na iOS 12, co oznacza, że SameSite=Nonejest błędnie traktowany jako SameSite=Strictnp. Najbardziej restrykcyjne ustawienie.

Opublikowałem wskazówki dotyczące przepisów na ciasteczka SameSite na temat:

  • Używanie dwóch zestawów plików cookie w celu uwzględnienia przeglądarek, które obsługują SameSite=None; Securei tych, które nie obsługują .
  • Wykrywanie agenta użytkownika w poszukiwaniu niekompatybilnych przeglądarek i brak wyświetlania SameSite=Nonetych żądań.
rowan_m
źródło
1
Cześć Rowan, dziękuję za odpowiedź i przepraszam za spóźnioną odpowiedź. Poprosiłem mój zespół po stronie serwera o wypróbowanie wskazówek z powyższego linku web.dev. Być może jest to całkowicie niewłaściwe pytanie, tak czy inaczej. Ponieważ zmiana ma wpływ na miliony użytkowników, czy są jakieś wieści, jeśli zespół Apple opracuje w przyszłości plan rozwiązania tego problemu?
DieOnTime,
Nie mogę mówić w imieniu zespołu Apple / Safari. Myślę, że oryginalny błąd jest najlepszym miejscem do tych dyskusji.
rowan_m
0

W przypadku aplikacji zakodowanych w Rubim (w szczególności Railsach, Sinatrze lub cokolwiek innego na stojaku) klejnot RailsSameSiteCookie rozwiązuje to i powiązane problemy całkiem nieźle. Kod czyta się jak prawie translacja pseudokodu w dyskusji Chromium bez łamliwych wyrażeń regularnych.

Av Pinzur
źródło