Wie kann ich das Secure-Flag in einem ASP.NET-Sitzungscookie setzen, damit es nur über HTTPS und niemals über einfaches HTTP übertragen wird?
146
Wie kann ich das Secure-Flag in einem ASP.NET-Sitzungscookie setzen, damit es nur über HTTPS und niemals über einfaches HTTP übertragen wird?
Es gibt zwei Möglichkeiten: Mit einem httpCookies
Element web.config
können Sie aktivieren, bei requireSSL
dem nur alle Cookies übertragen werden, einschließlich der Sitzung nur in SSL und auch innerhalb der Formularauthentifizierung. Wenn Sie jedoch SSL auf httpcookies aktivieren, müssen Sie es auch innerhalb der Formularkonfiguration aktivieren.
Zur Verdeutlichung bearbeiten:
Geben Sie dies ein<system.web>
<httpCookies requireSSL="true" />
<httpCookies requireSSL="true" />
Fügen Sie im
<system.web>
Element das folgende Element hinzu:Wenn Sie jedoch ein
<forms>
Element in Ihremsystem.web\authentication
Block haben, überschreibt dies die Einstellung inhttpCookies
und setzt sie auf die Standardeinstellung zurückfalse
.In diesem Fall müssen Sie das
requireSSL="true"
Attribut auch dem Formularelement hinzufügen .So werden Sie am Ende mit:
Siehe hier und hier für MSDN - Dokumentation dieser Elemente.
quelle
roleManager
Element vorhanden ist ,cookieRequireSSL="true"
sollte sein Attribut außerdem auf true gesetzt werden. Ref. msdn.microsoft.com/en-us/library/…Wenn Sie über eingecheckten Code in einer Unternehmensumgebung sprechen, wird es schnell chaotisch. Wir haben festgestellt, dass der beste Ansatz darin besteht, dass web.Release.config Folgendes enthält:
Auf diese Weise sind Entwickler nicht betroffen (laufen in Debug), und nur Server, die Release-Builds erhalten, benötigen Cookies, die SSL sein müssen.
quelle
sicher - Dieses Attribut weist den Browser an, das Cookie nur zu senden, wenn die Anforderung über einen sicheren Kanal wie HTTPS gesendet wird. Dies schützt das Cookie vor der Weitergabe unverschlüsselter Anforderungen. Wenn auf die Anwendung sowohl über HTTP als auch über HTTPS zugegriffen werden kann, besteht die Möglichkeit, dass das Cookie im Klartext gesendet wird.
quelle
Aufbauend auf der Antwort von @Mark D würde ich web.config-Transformationen verwenden, um alle verschiedenen Cookies auf Sicher zu setzen. Dies beinhaltet die Einstellung
anonymousIdentification cookieRequireSSL
undhttpCookies requireSSL
.Zu diesem Zweck würden Sie Ihre web.Release.config wie folgt einrichten:
Wenn Sie die Rollen- und Formularauthentifizierung mit
ASP.NET Membership Provider
(ich weiß, es ist uralt) verwenden, möchten Sie auch dieroleManager cookieRequireSSL
und dieforms requireSSL
Attribute als sicher festlegen . In diesem Fall sieht Ihre web.release.config möglicherweise folgendermaßen aus (siehe oben plus neue Tags für die Mitgliedschafts-API):Hintergrundinformationen zu web.config werden hier transformiert: http://go.microsoft.com/fwlink/?LinkId=125889
Dies geht natürlich über die ursprüngliche Frage des OP hinaus. Wenn Sie jedoch nicht alle auf Sicherheit einstellen, können Sie davon ausgehen, dass ein Sicherheitsscan-Tool dies bemerkt und im Bericht rote Fahnen angezeigt werden. Frag mich, woher ich das weiß. :) :)
quelle