Antworten:
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" />
Fügen Sie im <system.web>
Element das folgende Element hinzu:
<httpCookies requireSSL="true" />
Wenn Sie jedoch ein <forms>
Element in Ihrem system.web\authentication
Block haben, überschreibt dies die Einstellung in httpCookies
und setzt sie auf die Standardeinstellung zurück false
.
In diesem Fall müssen Sie das requireSSL="true"
Attribut auch dem Formularelement hinzufügen .
So werden Sie am Ende mit:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
Siehe hier und hier für MSDN - Dokumentation dieser Elemente.
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:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
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.
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.
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
und httpCookies requireSSL
.
Zu diesem Zweck würden Sie Ihre web.Release.config wie folgt einrichten:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
Wenn Sie die Rollen- und Formularauthentifizierung mit ASP.NET Membership Provider
(ich weiß, es ist uralt) verwenden, möchten Sie auch die roleManager cookieRequireSSL
und die forms 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):
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
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ß. :) :)
<httpCookies requireSSL="true" />