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 sessionState elementu konfiguracji.
Uwaga / Notatka
Aby zwiększyć bezpieczeństwo aplikacji, aplikacja powinna zezwalać użytkownikom na wylogowanie się, w którym momencie powinna wywołać metodę Abandon . Zmniejsza to potencjalne ryzyko 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 śledzi ścieżkę łączy, 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 zgodnym z nazwą aplikacji i przed pozostałym plikiem lub identyfikatorem katalogu wirtualnego. Dzięki temu ASP.NET rozpoznać nazwę aplikacji przed użyciem SessionStateModule w żądaniu.
Domyślnie identyfikatory sesji używane w sesjach bez plików cookie są odzyskiwanych. Oznacza to, że jeśli żądanie zostanie wykonane z identyfikatorem sesji, który wygasł, nowa sesja zostanie uruchomiona przy użyciu identyfikatora sesji dostarczonego z żądaniem. Takie zachowanie może spowodować niechciane udostępnianie danych sesji, gdy link zawierający identyfikator sesji bez plików cookie jest udostępniany wielu przeglądarkom, na przykład 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 truewartość . Spowoduje to wygenerowanie nowego identyfikatora sesji po wysłaniu żądania sesji bez plików cookie z wygasłym identyfikatorem sesji. Należy pamiętać, że jeśli żądanie wysłane przy użyciu wygasłego identyfikatora sesji używa metody HTTP POST, wszystkie opublikowane dane zostaną utracone, gdy regenerateExpiredSessionId jest true, ponieważ ASP.NET wykonuje przekierowanie, aby upewnić się, że przeglądarka ma nowy identyfikator sesji w adresie URL.
Uwaga / Notatka
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 SessionIDelement .