HttpSessionState.IsCookieless Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die Sitzungs-ID in der URL eingebettet oder in einem HTTP-Cookie gespeichert ist.
public:
property bool IsCookieless { bool get(); };
public bool IsCookieless { get; }
member this.IsCookieless : bool
Public ReadOnly Property IsCookieless As Boolean
Eigenschaftswert
true
, wenn die Sitzung in der URL eingebettet ist, andernfalls false
.
Beispiele
Im folgenden Codebeispiel wird das cookieless
Sitzungsattribut in der Web.config-Datei auf true festgelegt.
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
regenerateExpiredSessionId="true"
timeout="30" />
</system.web>
</configuration>
Hinweise
ASP.NET identifiziert Sitzungen mit jedem Browser eindeutig. Standardmäßig wird der eindeutige Bezeichner für eine Sitzung in einem nicht ablaufenden Sitzungscooky im Browser gespeichert. Sie können angeben, dass Sitzungsbezeichner nicht in einem Cookie gespeichert werden, indem Sie das cookieless
Attribut im konfigurationselement sessionState auf true
festlegen.
Hinweis
Um die Sicherheit Ihrer Anwendung zu verbessern, sollte Ihre Anwendung benutzern das Abmelden ermöglichen, und zu diesem Zeitpunkt sollte die Abandon Methode aufgerufen werden. Dadurch wird das Potenzial einer unerwünschten Quelle verringert, die den eindeutigen Bezeichner in der URL verwendet, um private Daten abzurufen, die in der Sitzung für einen Benutzer gespeichert sind.
ASP.NET behält den cookielosen Sitzungsstatus bei, indem automatisch eine eindeutige Sitzungs-ID in die URL der Seite eingefügt wird. Beispielsweise wurde die folgende URL von ASP.NET so geändert, dass sie die eindeutige Sitzungs-ID lit3py55t21z5v55vlm25s5 einschließt:
http://www.example.com/(S(4danlfat035muve4g0mvgfrr))/orderform.aspx
ASP.NET ändert die Links auf allen angeforderten Seiten, indem ein Sitzungs-ID-Wert in die Links eingebettet wird, bevor jede Seite an den Browser gesendet wird. Der Sitzungsstatus wird beibehalten, solange der Benutzer dem Pfad der von der Website bereitgestellten Links folgt. Wenn der Benutzer-Agent jedoch eine URL neu schreibt, geht die Sitzungszustandsinstanz verloren.
Die Sitzungs-ID wird in die URL nach dem Schrägstrich eingebettet, der dem Anwendungsnamen folgt, und vor allen verbleibenden Datei- oder V-Verzeichnis-Bezeichnern. Dadurch können ASP.NET den Anwendungsnamen auflösen, bevor sie in SessionStateModule die Anforderung einbezogen werden.
Standardmäßig werden Sitzungsbezeichner, die in cookielosen Sitzungen verwendet werden, wiederverwendet. Das heißt, wenn eine Anforderung mit einer sitzungs-ID gestellt wird, die abgelaufen ist, wird eine neue Sitzung mithilfe der mit der Anforderung angegebenen Sitzungs-ID gestartet. Dieses Verhalten kann zur unerwünschten Freigabe von Sitzungsdaten führen, wenn ein Link, der eine cookielose Sitzungs-ID enthält, für mehrere Browser freigegeben wird, z. B. über eine Suchmaschine oder ein anderes Programm. Sie können die Möglichkeit verringern, dass Sitzungsdaten von mehreren Clients freigegeben werden, indem Sie das Recycling von Sitzungsbezeichnern deaktivieren. Legen Sie hierzu das regenerateExpiredSessionId
Attribut des konfigurationselements sessionState auf fest true
. Dies führt dazu, dass eine neue Sitzungs-ID generiert wird, wenn eine cookielose Sitzungsanforderung mit einer abgelaufenen Sitzungs-ID gestellt wird. Beachten Sie, dass, wenn die anforderung mit der abgelaufenen Sitzungs-ID die HTTP-Methode POST
verwendet, alle veröffentlichten Daten verloren gehen, wenn regenerateExpiredSessionId
dies ist true
, da ASP.NET eine Umleitung durchführt, um sicherzustellen, dass der Browser über den neuen Sitzungsbezeichner in der URL verfügt.
Hinweis
Das Festlegen des regenerateExpiredSessionId
Attributs auf reduziert true
zwar die Möglichkeit der unerwünschten Freigabe von Sitzungsdaten, schützt jedoch nicht davor, dass eine unerwünschte Quelle Zugriff auf die Sitzung eines anderen Benutzers erhält, indem sie den SessionID Wert erhält und ihn in Anforderungen an den Server einschließt. Wenn Sie private oder vertrauliche Informationen im Sitzungszustand speichern, wird empfohlen, SSL zu verwenden, um jede Kommunikation zwischen dem Browser und dem Server zu verschlüsseln, die den SessionIDenthält.