HttpSessionState.IsCookieless Właściwość

Definicja

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

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 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 lit3py55t21z5v55vlm25s55:

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ą łą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, 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óry wygasł, 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, 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 ma truewartość , ponieważ ASP.NET wykonuje przekierowanie, aby upewnić się, że przeglądarka ma nowy identyfikator sesji w adresie URL.

Uwaga

Podczas ustawiania 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 uwzględnienie jej w żądaniach do serwera. Jeśli przechowujesz prywatne lub poufne informacje w stanie sesji, zaleca się użycie protokołu SSL do szyfrowania komunikacji między przeglądarką a serwerem zawierającym SessionIDprogram .

Dotyczy

Zobacz też