Ich habe das .ASPXAUTH-Cookie auf "nur https" gesetzt, bin mir jedoch nicht sicher, wie ich dasselbe mit der ASP.NET_SessionId effektiv tun soll.
Die gesamte Site verwendet HTTPS, sodass das Cookie nicht sowohl mit http als auch mit https funktionieren muss.
c#
asp.net
session-cookies
Pete
quelle
quelle
Antworten:
Hier ist ein Code-Ausschnitt aus einem Blog-Artikel von Anubhav Goyal :
// this code will mark the forms authentication cookie and the // session cookie as Secure. if (Response.Cookies.Count > 0) { foreach (string s in Response.Cookies.AllKeys) { if (s == FormsAuthentication.FormsCookieName || "asp.net_sessionid".Equals(s, StringComparison.InvariantCultureIgnoreCase)) { Response.Cookies[s].Secure = true; } } }
Wenn Sie dies dem EndRequest-Ereignishandler in der Datei global.asax hinzufügen, sollte dies für alle Seitenaufrufe möglich sein.
Hinweis: Es wurde eine Bearbeitung vorgeschlagen, um eine
break;
Anweisung in eine erfolgreiche "sichere" Zuweisung einzufügen. Ich habe diese Änderung aufgrund der Idee abgelehnt, dass nur eines der Cookies zum Sichern gezwungen werden kann und das zweite ignoriert wird. Es ist nicht unvorstellbar, einen Zähler oder eine andere Metrik hinzuzufügen, um festzustellen, ob beide gesichert wurden, und um an diesem Punkt zu brechen.quelle
ASP.NET_SessionId
. Es kann überschrieben werden msdn.microsoft.com/en-us/library/h6bb9cz9.aspxrequireSSL="true"
dashttpCookies
Element festzulegen, und dies wird funktionieren. Möglicherweise müssen Sie zuerst Ihre vorhandenen Cookies löschen, bevor Sie die Änderung sehen.Um das
; secure
Suffix zumSet-Cookie
http-Header hinzuzufügen, habe ich einfach das<httpCookies>
Element in der web.config verwendet:<system.web> <httpCookies httpOnlyCookies="true" requireSSL="true" /> </system.web>
IMHO viel praktischer als das Schreiben von Code wie im Artikel von Anubhav Goyal.
Siehe: http://msdn.microsoft.com/en-us/library/ms228262(v=vs.100).aspx
quelle
asp.net_sessionid
ist noch nicht drinsecure
. Gilt Ihre Methode für eine MVC-Webanwendung?Wenn Sie die obige Lösung von Marcel verwenden, um das Formularauthentifizierungs-Cookie zu sichern, sollten Sie auch das Konfigurationselement "Authentifizierung" aktualisieren, um SSL zu verwenden
<authentication mode="Forms"> <forms ... requireSSL="true" /> </authentication>
Andere weise Authentifizierungs-Cookies sind nicht https
Siehe: http://msdn.microsoft.com/en-us/library/vstudio/1d3t3c61(v=vs.100).aspx
quelle
Es wurde festgestellt, dass das Festlegen der sicheren Eigenschaft in Session_Start ausreichend ist, wie im MSDN-Blog " Sichern der Sitzungs-ID: ASP / ASP.NET " mit einigen Erweiterungen empfohlen .
protected void Session_Start(Object sender, EventArgs e) { SessionStateSection sessionState = (SessionStateSection)ConfigurationManager.GetSection("system.web/sessionState"); string sidCookieName = sessionState.CookieName; if (Request.Cookies[sidCookieName] != null) { HttpCookie sidCookie = Response.Cookies[sidCookieName]; sidCookie.Value = Session.SessionID; sidCookie.HttpOnly = true; sidCookie.Secure = true; sidCookie.Path = "/"; } }
quelle
Hinzufügen zu @ JoelEthertons Lösung, um eine neu entdeckte Sicherheitslücke zu beheben. Diese Sicherheitsanfälligkeit tritt auf, wenn Benutzer HTTP anfordern und zu HTTPS umgeleitet werden, das Sitzungs-ID-Cookie jedoch bei der ersten Anforderung an HTTP als sicher festgelegt wird. Laut McAfee Secure ist dies jetzt eine Sicherheitslücke.
Dieser Code schützt Cookies nur, wenn die Anfrage HTTPS verwendet. Das Sessionid-Cookie läuft ab, wenn nicht HTTPS.
// this code will mark the forms authentication cookie and the // session cookie as Secure. if (Request.IsSecureConnection) { if (Response.Cookies.Count > 0) { foreach (string s in Response.Cookies.AllKeys) { if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid") { Response.Cookies[s].Secure = true; } } } } else { //if not secure, then don't set session cookie Response.Cookies["asp.net_sessionid"].Value = string.Empty; Response.Cookies["asp.net_sessionid"].Expires = new DateTime(2018, 01, 01); }
quelle
Wenn die gesamte Site HTTPS verwendet, ist Ihr sessionId-Cookie mindestens so sicher wie die HTTPS-Verschlüsselung. Dies liegt daran, dass Cookies als HTTP-Header gesendet werden und bei Verwendung von SSL die HTTP-Header bei der Übertragung mit SSL verschlüsselt werden.
quelle