Frage

Wie kann ich den Secure-Flag auf einem ASP.NET-Session-Cookie gesetzt, so dass es nur über HTTPS und nie über einfaches HTTP übertragen werden?

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten, ein httpCookies Element in web.config können Sie auf requireSSL einzuschalten, die nur alle Cookies einschließlich Sitzung in SSL übertragen nur und bildet auch innerhalb Authentifizierung, aber wenn Sie auf SSL einschalten httpcookies Sie müssen es auch im Inneren einschalten Formen Konfiguration zu.

Bearbeiten für Klarheit: Setzen Sie dieses in <system.web>

<httpCookies requireSSL="true" />

Andere Tipps

Im <system.web> Elemente, fügen Sie das folgende Element:

<httpCookies requireSSL="true" />

Wenn Sie jedoch ein <forms> Element in Ihrem system.web\authentication Block haben, dann wird dies die Einstellung in httpCookies außer Kraft setzen, es wieder auf den Standard false Einstellung.

In diesem Fall müssen Sie auch das requireSSL="true" Attribut auf das Formularelement hinzuzufügen.

Damit Sie am Ende werden:

<system.web>
    <authentication mode="Forms">
        <forms requireSSL="true">
            <!-- forms content -->
        </forms>
    </authentication>
</system.web>

Siehe hier und hier für MSDN-Dokumentation dieser Elemente.

Die Dinge werden schnell chaotisch, wenn Sie überprüft-in-Code in einer Unternehmensumgebung zu sprechen sind. Wir haben festgestellt, dass der beste Ansatz der web.Release.config enthalten folgende haben:

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
  <authentication>
      <forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
  </authentication>
</system.web>

Auf diese Weise Entwickler sind davon nicht betroffen (in Debug ausgeführt wird), und nur Server, die erhalten Releasebuilds Cookies erfordern SSL sein.

sicher - Dieses Attribut teilt den Browser nur das Cookie zu senden, wenn die Anfrage über einen sicheren Kanal gesendet wird, wie HTTPS. Dies wird helfen, die Cookie-Schutz von über unverschlüsselte Anfragen weitergeleitet werden. Wenn die Anwendung kann sowohl zugegriffen wird über HTTP und HTTPS, dann besteht die Möglichkeit, dass das Cookie kann im Klartext gesendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top