Ostatnio samesite = luźne automatyczne dodawanie do mojego pliku cookie sesji! ten atrybut wystarczy dodać do sessionID:
"Set-Cookie ASP.NET_SessionId=zana3mklplqwewhwvika2125; path=/; HttpOnly; **SameSite=Lax**"
Moja witryna jest hostowana w IIS 8.5, Windows 2012 R2 i nie ma WAF ani UrlRewrite, a ja wyłączam program antywirusowy (kasper).
ale mimo to mają ten sam problem na niektórych serwerach klientów.
dowolny pomysł?
ZMIENIONO: Znajduję to: https://support.microsoft.com/en-us/help/4524419/kb4524419
ASP.NET będzie teraz emitować nagłówek pliku cookie SameSite, gdy wartość HttpCookie.SameSite ma wartość „Brak”, aby uwzględnić nadchodzące zmiany w obsłudze plików cookie SameSite w Chrome. W ramach tej zmiany pliki cookie FormsAuth i SessionState będą również wydawane z SameSite = „Lax” zamiast poprzedniej wartości domyślnej „None”, chociaż te wartości można zastąpić w pliku web.config.
Jak mogę zastąpić pliki cookie Samesite dla SessionState w pliku web.config? dodałem ten wiersz, ale nie działa na SessionID cookie!
<httpCookies sameSite="Unspecified" />
ZMIENIONO: Znajduję to: https://docs.microsoft.com/en-us/dotnet/api/system.web.configuration.sessionstatesection.cookiesamesite?view=netframework-4.8#System_Web_Configuration_SessionStateSection_CookieSameSite
Ustaw samesite dla stateserver za pomocą atrybutu „cookieSameSite” znacznika SessionState.
Odpowiedzi:
Dodaj te opcje do web.config dla sameSite = None, Lax lub Strict
źródło
<httpCookies sameSite
nie jest pokazany jako poprawna opcja w .Net Framework 4.8Nie mogę użyć przepisywania, ponieważ UrlRewrite nie jest zainstalowany na wszystkich serwerach moich klientów.
Na koniec dodaję cookieSameSite do mojego pliku web.config:
źródło
cookieSameSite
funkcjonalności do web.config - robi to .NET 4.7.2. Link, który zamieściłem w moim komentarzu, jest również link do strony, do której się odwołujesz.Atrybut CookieSameSite nie jest dostępny dla wielu starszych platform. Jeśli jesteś w sytuacji, gdy zaakceptowana odpowiedź nie jest obsługiwana w twoim środowisku, czytaj dalej!
Zmodyfikowałem kilka odpowiedzi SO, aby wymyślić przepisywanie adresów URL, które dodaje
SameSite=None
sesyjne pliki cookie, a także usuwamSameSite=None
ze wszystkich plików cookie w większości niezgodnych przeglądarek. Celem tego przepisania jest zachowanie „starszego” zachowania sprzed Chrome 80.Pełny opis na moim blogu Coder Frontline :
Powinno to działać w przypadku większości aplikacji ASP .Net i ASP .Net Core, chociaż nowsze platformy mają odpowiedni kod i opcje konfiguracji umożliwiające kontrolowanie tego zachowania. Przed użyciem mojego przepisywania powyżej poleciłbym zbadanie wszystkich dostępnych opcji.
źródło
<system.net></system.net>
?<system.webServer>
SameSite=Lax
zostanie tylko dołączony,SameSite=None
a nie zastąpi go.(SameSite=.*)?
w ogóle mają wzorzec?SameSite=Lax
nagłówek:((.*)(ASP.NET_SessionId)(=.*))(?=SameSite)
Zobacz zaktualizowany regex101.com/r/7D9UdO/3 - jednak pamiętaj, że to wyrażenie wyklucza później wszystko, co chcesz później, na przykład bezpieczny nagłówek. Powinno to być rzadkim warunkiem, dlatego kluczowym punktem jest sprawdzenie, co emituje aplikacja systemu + OS i napisanie wyrażenia regularnego stosownie do potrzeb. Zaktualizuję moją odpowiedź, aby odzwierciedlała obie strony :)Ostatnia aktualizacja: odpowiedź zemien jest bardziej wyczerpująca i kompletna niż moja. ponieważ ustawia cookie na podstawie agenta użytkownika.
Moja odpowiedź:
Możesz zamienić SameSite = Lax na SameSite = None dla ASP.NET_SessionId w web.config w następujący sposób:
Aktualizacja: aby zapobiec problemowi z IOS , wymień
z
źródło
@zemien Twoje rozwiązanie poprawnie rozwiązało nasze problemy z Google Chrome
Mamy integrację, w której nasza aplikacja jest osadzona w ramce iframe na stronie trzeciej. Wersja Chrome 80 wydana 4 lutego 2020 roku uniemożliwiła ładowanie plików cookie.
Musiałem jednak zmodyfikować wzorzec, aby przechwycić wszystkie pliki cookie, dodać flagę Bezpieczne i warunek, aby nie stosować przepisywania na localhost dla naszego lokalnego środowiska innego niż https
źródło
Pracuje dla mnie. Dodano do mojego pliku web.config:
Uaktualnij do .NET Framework 4.8 + poprawka instalacyjna: Zbiorcza aktualizacja 2019-12 dla .NET Framework 3.5 i 4.8 dla Windows 10 wersja 1909 dla x64 (KB4533002)
źródło