HttpSessionState.IsCookieless Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera wartość wskazującą, czy identyfikator sesji jest osadzony w adresie URL, czy przechowywany w pliku cookie HTTP.
public:
property bool IsCookieless { bool get(); };
public bool IsCookieless { get; }
member this.IsCookieless : bool
Public ReadOnly Property IsCookieless As Boolean
Wartość właściwości
true
jeśli sesja jest osadzona w adresie URL; w przeciwnym razie , false
.
Przykłady
Poniższy przykład kodu ustawia cookieless
atrybut sesji na wartość true w pliku Web.config.
<configuration>
<system.web>
<sessionState
mode="InProc"
cookieless="true"
regenerateExpiredSessionId="true"
timeout="30" />
</system.web>
</configuration>
Uwagi
ASP.NET identyfikuje sesje unikatowo z każdą przeglądarką. Domyślnie unikatowy identyfikator sesji jest przechowywany w pliku cookie sesji, który nie wygasa w przeglądarce. Można określić, że identyfikatory sesji nie są przechowywane w pliku cookie, ustawiając cookieless
atrybut na true
w elemecie konfiguracji sessionState .
Uwaga
Aby zwiększyć bezpieczeństwo aplikacji, aplikacja powinna zezwolić użytkownikom na wylogowanie się, w którym momencie powinna wywołać metodę Abandon . Zmniejsza to potencjał niepożądanego źródła przy użyciu unikatowego identyfikatora w adresie URL w celu pobrania prywatnych danych przechowywanych w sesji dla użytkownika.
ASP.NET zachowuje stan sesji bez plików cookie, automatycznie wstawiając unikatowy identyfikator sesji do adresu URL strony. Na przykład następujący adres URL został zmodyfikowany przez ASP.NET w celu uwzględnienia unikatowego identyfikatora sesji lit3py55t21z5v5vlm25s55:
http://www.example.com/(S(4danlfat035muve4g0mvgfrr))/orderform.aspx
ASP.NET modyfikuje linki zawarte we wszystkich żądanych stronach, osadzając wartość identyfikatora sesji w linkach tuż przed wysłaniem każdej strony do przeglądarki. Stan sesji jest utrzymywany tak długo, jak użytkownik podąża za ścieżką linków, które udostępnia witryna. Jeśli jednak agent użytkownika ponownie napisze adres URL, wystąpienie stanu sesji zostanie utracone.
Identyfikator sesji jest osadzony w adresie URL po ukośniku, który następuje po nazwie aplikacji i przed pozostałym plikiem lub identyfikatorem katalogu wirtualnego. Dzięki temu ASP.NET rozpoznać nazwę aplikacji przed udziałem SessionStateModule elementu w żądaniu.
Domyślnie identyfikatory sesji używane w sesjach bez plików cookie są poddawane recyklingu. Oznacza to, że jeśli żądanie zostanie wykonane z identyfikatorem sesji, która wygasła, nowa sesja zostanie uruchomiona przy użyciu identyfikatora sesji dostarczonego z żądaniem. Takie zachowanie może spowodować niepożądane udostępnianie danych sesji, gdy link zawierający identyfikator sesji bez plików cookie jest udostępniany wielu przeglądarkom, być może za pośrednictwem wyszukiwarki lub innego programu. Można zmniejszyć możliwość udostępniania danych sesji przez wielu klientów, wyłączając odtwarzanie identyfikatorów sesji. W tym celu ustaw regenerateExpiredSessionId
atrybut elementu konfiguracji sessionState na true
wartość . Spowoduje to wygenerowanie nowego identyfikatora sesji po wysłaniu żądania sesji bez plików cookie o wygasłym identyfikatorze sesji. Należy pamiętać, że jeśli żądanie wykonane przy użyciu wygasłego identyfikatora sesji używa metody HTTP POST
, wszystkie opublikowane dane zostaną utracone, gdy regenerateExpiredSessionId
jest to true
, ponieważ ASP.NET wykonuje przekierowanie, aby upewnić się, że przeglądarka ma nowy identyfikator sesji w adresie URL.
Uwaga
Ustawienie atrybutu regenerateExpiredSessionId
w celu true
zmniejszenia możliwości niechcianego udostępniania danych sesji nie chroni przed niechcianym źródłem uzyskującym dostęp do sesji innego użytkownika przez uzyskanie SessionID wartości i dołączenie jej w żądaniach do serwera. Jeśli przechowujesz prywatne lub poufne informacje w stanie sesji, zaleca się użycie protokołu SSL do szyfrowania dowolnej komunikacji między przeglądarką a serwerem zawierającym usługę SessionID.