Kürzlich wurde samesite = lax automatisch zu meinem Sitzungscookie hinzugefügt! Dieses Attribut wird einfach zur Sitzungs-ID hinzugefügt:
"Set-Cookie ASP.NET_SessionId=zana3mklplqwewhwvika2125; path=/; HttpOnly; **SameSite=Lax**"
Meine auf IIS 8.5, Windows 2012 R2 gehostete Website enthält weder WAF noch UrlRewrite, und ich deaktiviere AntiVirus (Kasper).
aber noch haben das gleiche Problem auf einigen Kundenservern.
irgendeine Idee?
BEARBEITET: Ich finde dies: https://support.microsoft.com/en-us/help/4524419/kb4524419
ASP.NET gibt jetzt einen SameSite-Cookie-Header aus, wenn der HttpCookie.SameSite-Wert "None" ist, um anstehenden Änderungen an der Behandlung von SameSite-Cookies in Chrome Rechnung zu tragen. Im Rahmen dieser Änderung werden FormsAuth- und SessionState-Cookies auch mit SameSite = 'Lax' anstelle der vorherigen Standardeinstellung 'None' ausgegeben, obwohl diese Werte in web.config überschrieben werden können.
Wie kann ich Samesite-Cookies für SessionState in web.config überschreiben? Ich füge diese Zeile hinzu, aber es funktioniert nicht auf SessionID-Cookie!
<httpCookies sameSite="Unspecified" />
BEARBEITET: Ich finde dies: https://docs.microsoft.com/en-us/dotnet/api/system.web.configuration.sessionstatesection.cookiesamesite?view=netframework-4.8#System_Web_Configuration_SessionStateSection_CookieSameSite
Legen Sie die Samesite für den Stateserver anhand des Attributs "cookieSameSite" des SessionState-Tags fest.
Antworten:
Fügen Sie diese Optionen zu web.config für sameSite = None, Lax oder Strict hinzu
quelle
<httpCookies sameSite
wird in .Net Framework 4.8Ich kann rewrite nicht verwenden, da UrlRewrite nicht auf allen Servern meiner Kunden installiert ist.
Schließlich füge ich cookieSameSite zu meiner web.config hinzu:
quelle
cookieSameSite
web.config nicht die Funktionalität hinzu - .NET 4.7.2 tut dies. Der Link, den ich in meinem Kommentar gepostet habe, ist auch auf der Seite verlinkt, auf die Sie verweisen.Das CookieSameSite-Attribut ist für viele ältere Frameworks nicht verfügbar. Wenn Sie sich in einer Situation befinden, in der die akzeptierte Antwort in Ihrer Umgebung nicht unterstützt wird, lesen Sie weiter!
Ich habe mehrere SO-Antworten geändert, um diese URL-Umschreibung zu erhalten, die
SameSite=None
Sitzungscookies hinzufügt , und sie für die meisten inkompatiblen BrowserSameSite=None
aus allen Cookies zu entfernen . Ziel dieser Neufassung ist es, das "Legacy" -Verhalten vor Chrome 80 beizubehalten.Vollständiger Artikel in meinem Coder Frontline-Blog :
Dies sollte für die meisten ASP .Net- und ASP .Net Core-Anwendungen funktionieren, obwohl neuere Frameworks über geeignete Code- und Konfigurationsoptionen verfügen, mit denen Sie dieses Verhalten steuern können. Ich würde empfehlen, alle verfügbaren Optionen zu prüfen, bevor Sie mein oben beschriebenes Umschreiben verwenden.
quelle
<system.net></system.net>
?<system.webServer>
SameSite=Lax
wird es nur angehängtSameSite=None
und nicht ersetzt.(SameSite=.*)?
überhaupt im Muster ist?SameSite=Lax
Header auszuschließen :((.*)(ASP.NET_SessionId)(=.*))(?=SameSite)
Siehe aktualisierter regulärer Ausdruck101.com/r/7D9UdO/3. Beachten Sie jedoch, dass dieser reguläre Ausdruck alles ausschließt, was Sie später wünschen, z. B. den sicheren Header. Dies sollte eine seltene Bedingung sein, daher ist es wichtig zu sehen, was Ihr OS + Framework + App ausgibt, und die Regex entsprechend zu schreiben. Ich werde meine Antwort aktualisieren, um beide Richtungen zu reflektieren :)Letztes Update: Zemiens Antwort ist umfassender und vollständiger als meine. weil es Cookies basierend auf dem Benutzeragenten setzt.
Meine Antwort:
Sie können SameSite = Lax durch SameSite = None für ASP.NET_SessionId in web.config folgendermaßen ersetzen:
Update: Um ein IOS-Problem zu vermeiden , ersetzen Sie es
mit
quelle
@zemien Ihre Lösung hat unsere Google Chrome-Probleme richtig gelöst
Wir haben eine Integration, bei der unsere Anwendung in einen Iframe eines Drittanbieters eingebettet ist. Die am 4. Februar 2020 veröffentlichte Chrome-Version 80 verhinderte das Laden von Cookies.
Ich musste jedoch das Muster ändern, um alle Cookies zu erfassen, das Secure-Flag hinzuzufügen und die Bedingung zu erfüllen, dass das Umschreiben auf localhost für unsere lokale Nicht-https-Umgebung nicht angewendet wird
quelle
Funktioniert bei mir. In meine web.config-Datei aufgenommen:
Upgrade auf .Net Framework 4.8 + Installationspatch: 2019-12 Kumulatives Update für .NET Framework 3.5 und 4.8 für Windows 10 Version 1909 für x64 (KB4533002)
quelle