2009-09-18 3 views

Antwort

82

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 auch innerhalb Formularauthentifizierung, aber wenn Sie auf SSL einschalten httpcookies Sie müssen es auch einschalten Innenformulare Konfiguration auch.

Edit für Klarheit: dieses in <system.web>

<httpCookies requireSSL="true" /> 
+1

+1 Dies funktionierte. Vielen Dank! – Alex

+11

+1 Um zu verdeutlichen, das ist, was Sie der web.config hinzufügen sollten, um das sichere Flag auf dem Authentifizierungs-Cookie auf ' ' – Tr1stan

+6

zu setzen. Beachten Sie, dass dies von Ihrer (Server-Ebene) abhängt) Aufbau. Ich habe die Testregion mit dem Fehler "Die Anwendung ist für die Ausgabe von sicheren Cookies konfiguriert. Diese Cookies erfordern, dass der Browser die Anfrage über SSL (https-Protokoll) absetzt. Die aktuelle Anfrage ist jedoch nicht über SSL." Dies liegt daran, dass wir einen Reverse-Proxy verwenden und die Browser eine Verbindung über SSL herstellen, der Reverse-Proxy für den IIS-Server jedoch über Port 80 liegt, sodass die Anwendung nicht davon überzeugt war, dass sie gesichert wurde. – mlhDev

130

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

<httpCookies requireSSL="true" /> 

Wenn Sie jedoch ein <forms> Element haben in Ihr system.web\authentication Block, dann überschreibt dies die Einstellung in httpCookies, setzen Sie es auf den Standard false zurück.

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

So werden Sie am Ende mit:

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

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

+2

Minor edit (brauche auth Knoten in dort BTW-System.Bahn und Formulare):

+1

Sie können andere web.config Einstellungen über Reiten Ihr vermeiden Einstellung durch Aufnahme des Attributs 'lockItem'. Wie folgt: . Weitere Informationen finden Sie hier http://www.dotnetnoob.com/2010/11/how-to-secure-aspnet-cookies.html – JTech

+0

Zusätzlich, wenn es ein 'roleManager' Element gibt sollte sein Attribut' cookieRequireSSL = "true" 'sein auch auf wahr gesetzt werden. Ref. https://msdn.microsoft.com/en-us/library/system.web.security.roles.cookierequiressl(v=vs.110).aspx –

12

Die Dinge werden schnell unübersichtlich, wenn Sie in einer Unternehmensumgebung über eingecheckten Code sprechen. Wir haben festgestellt, dass der beste Ansatz die web.Release.config folgendes enthalten haben, ist:

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

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

Verwandte Themen