Поделиться через


HttpSessionState.IsCookieless Свойство

Определение

Возвращает значение, позволяющее определить, был ли идентификатор сеанса внедрен в URL-адрес или сохранен в HTTP-файле Cookie.

public:
 property bool IsCookieless { bool get(); };
public bool IsCookieless { get; }
member this.IsCookieless : bool
Public ReadOnly Property IsCookieless As Boolean

Значение свойства

Если сеанс был внедрен в URL-адрес, значение true, если нет, значение false.

Примеры

В следующем примере кода атрибуту сеанса cookieless присваивается значение true в файле Web.config.

<configuration>
  <system.web>
    <sessionState
      mode="InProc"
      cookieless="true"
      regenerateExpiredSessionId="true"
      timeout="30" />
  </system.web>
</configuration>

Комментарии

ASP.NET определяет сеансы уникальным образом в каждом браузере. По умолчанию уникальный идентификатор сеанса хранится в файле cookie сеанса без истечения срока действия в браузере. Вы можете указать, что идентификаторы сеансов не хранятся в файле cookie, задав cookieless атрибуту значение true в элементе конфигурации sessionState .

Примечание

Чтобы повысить безопасность приложения, приложение должно разрешить пользователям выйти из системы, после чего оно должно вызвать Abandon метод . Это снижает вероятность того, что нежелательный источник использует уникальный идентификатор в URL-адресе для получения личных данных, хранящихся в сеансе, для пользователя.

ASP.NET поддерживает состояние сеанса без файлов cookie, автоматически вставляя уникальный идентификатор сеанса в URL-адрес страницы. Например, следующий URL-адрес был изменен ASP.NET для включения уникального идентификатора сеанса lit3py55t21z5v55vlm25s55:

http://www.example.com/(S(4danlfat035muve4g0mvgfrr))/orderform.aspx

ASP.NET изменяет ссылки, содержащиеся на всех запрошенных страницах, внедряя значение идентификатора сеанса в ссылки непосредственно перед отправкой каждой страницы в браузер. Состояние сеанса сохраняется до тех пор, пока пользователь следует пути ссылок, которые предоставляет сайт. Однако если агент пользователя перезаписывает URL-адрес, экземпляр состояния сеанса будет потерян.

Идентификатор сеанса внедряется в URL-адрес после косой черты, следующей за именем приложения, и перед любым оставшимся файлом или идентификатором виртуального каталога. Это позволяет ASP.NET разрешить имя приложения перед использованием SessionStateModule в запросе .

По умолчанию идентификаторы сеансов, используемые в сеансах без файлов cookie, перезапускаются. То есть, если запрос выполняется с идентификатором сеанса, срок действия которого истек, запускается новый сеанс с идентификатором сеанса, предоставленным вместе с запросом. Такое поведение может привести к нежелательному обмену данными сеанса, если ссылка, содержащая идентификатор сеанса без файлов cookie, предоставляется нескольким браузерам, например через поисковую систему или другую программу. Вы можете уменьшить вероятность совместного использования данных сеанса несколькими клиентами, отключив перезапуск идентификаторов сеансов. Для этого присвойте regenerateExpiredSessionId атрибуту элемента конфигурации sessionState значение true. Это приведет к созданию нового идентификатора сеанса при выполнении запроса сеанса без файлов cookie с идентификатором сеанса с истекшим сроком действия. Обратите внимание, что если в запросе с идентификатором сеанса с истекшим сроком действия используется метод HTTP POST , все опубликованные данные будут потеряны, если regenerateExpiredSessionId имеет значение true, так как ASP.NET выполняет перенаправление, чтобы убедиться, что в URL-адресе браузера есть новый идентификатор сеанса.

Примечание

Хотя настройка атрибута regenerateExpiredSessionIdtrue уменьшает вероятность нежелательного совместного использования данных сеанса, он не защищает от нежелательного источника, получающего SessionID доступ к сеансу другого пользователя, путем получения значения и включения его в запросы к серверу. Если вы храните частную или конфиденциальную информацию в состоянии сеанса, рекомендуется использовать SSL для шифрования любого обмена данными между браузером и сервером, включающим SessionID.

Применяется к

См. также раздел