Если вы решите воспользоваться этим подходом, также не забудьте пометить cookie-набор как безопасный для того, чтобы он пересылался только через SSL-соединения. Это не позволит пользователям изменять URL-адрес с https:// на http://, стало быть, и не разрешит пересылать этот cookie-набор без SSL-шифрования. Вот какой код вам для этого нужен:

Request.Cookies["ASP.NET_SessionId"].Secure = true;

Как правило, вы будете использовать этот код сразу же после аутентификации пользователя. Обязательно убедитесь, что в состоянии сеанса уже присутствуют хоть какие-нибудь данные для того, чтобы сеанс не был завершен (и затем создан заново уже позже).

При использовании не поддерживающих cookie-наборов сеансов существует еще одна потенциальная угроза нарушения системы безопасности. Даже если идентификатор сеанса шифруется, сообразительный пользователь может, воспользовавшись тактикой социальной инженерии, вынудить другого пользователя подключиться к какому-нибудь определенному сеансу. Все, что злонамеренному пользователю нужно сделать — это "всучить" пользователю URL-адрес с действительным идентификатором сеанса. Щелкнув на ссылке, пользователь подключится к этому сеансу. Хотя с этого момента идентификатор сеанса будет защищаться, хакеру уже станет известно, какой идентификатор сеанса используется, и он сможет запросто "проникнуть" в этот сеанс позже.

Выполнив определенные шаги, вы можете снизить вероятность такой атаки. Во-первых, когда применяете не поддерживающие cookie-наборы сеансы, всегда устанавливайте для атрибута regenerateExpiredSessionId значение true. Это не позволит злонамеренному пользователю предоставить "просроченный" идентификатор сеанса. Во-вторых, явно завершайте текущий сеанс, прежде чем регистрировать нового пользователя.

Состояние приложения

Состояние приложения позволяет сохранять глобальные объекты, доступ к которым может получать любой клиент. В основе состояния приложения лежит класс System.Web.HttpApplicationState, который доступен на всех Web-страницах через встроенный объект Application.

Состояние приложения похоже на состояние сеанса. Оно поддерживает объекты такого же типа, хранит информацию на сервере и использует синтаксис такого же словарного стиля. Наиболее распространенным примером применения состояния приложения является глобальный счетчик, отслеживающий информацию о количестве раз, которое та или иная операция выполнялась всеми клиентами данного Web-приложения.

Например, вы могли бы создать обработчик событий global.asax, который отслеживал бы количество созданных сеансов или количество поступивших в приложение запросов. Или же вы могли использовать подобную логику в обработчике событий Page.Load для отслеживания числа раз, которое данная страница запрашивалась различными клиентами. Код, который вам следовало бы использовать в последнем случае, показан ниже:

предыдущая    следующая страница   оглавление

290

Hosted by uCoz