Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188      189      190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 189. Модуль Apache mod_session

Модули сеанса используют файлы cookie HTTP и, как таковые, могут стать жертвой атак межсайтового скриптинга или предоставить клиентам потенциально личную информацию. Пожалуйста, убедитесь, что соответствующие риски были приняты во внимание, прежде чем включать функции сеанса на вашем сервере.

Этот модуль обеспечивает поддержку интерфейса сеанса пользователя на уровне сервера. Сеансы можно использовать для отслеживания того, вошел ли пользователь в систему, или для другой информации о пользователе, которая должна быть доступна для запросов.

Сеансы могут храниться на сервере или в браузере. Сеансы также могут быть дополнительно зашифрованы для дополнительной безопасности. Эти функции разделены на несколько модулей в дополнение к mod_session ; mod_session_crypto , mod_session_cookie и mod_session_dbd . В зависимости от требований сервера загрузите соответствующие модули на сервер (либо статически во время компиляции, либо динамически через директиву LoadModule ).

Сеансами можно управлять из других модулей, которые зависят от сеанса, или сеанс можно читать и записывать, используя переменные среды и заголовки HTTP, если это необходимо.

Что такое сеанс?

В основе интерфейса сеанса лежит таблица пар «ключ-значение», доступная для всех запросов браузера. Эти пары могут быть установлены в любую допустимую строку, если это необходимо приложению, использующему сеанс.

«Сеанс» — это строка application/x-www-form-urlencoded , содержащая эти пары «ключ-значение», как определено в спецификации HTML.

Сеанс может быть дополнительно зашифрован и закодирован в base64 перед записью в механизм хранения, как это определено администратором.

Кому может быть полезен сеанс?

Интерфейс сеанса в первую очередь разработан для использования другими серверными модулями, такими как mod_auth_form , однако приложениям на основе CGI может быть дополнительно предоставлен доступ к содержимому сеанса через переменную среды HTTP_SESSION. Сеансы можно изменить и/или обновить, вставив заголовок ответа HTTP, содержащий новые параметры сеанса.

Хранение сессий на сервере

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

Если настроено, сеансы отслеживаются с помощью идентификатора сеанса, который хранится в файле cookie или извлекается из параметров, встроенных в строку запроса URL, как в типичном запросе GET.

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

Модуль mod_session_dbd позволяет хранить пользовательские сеансы в базе данных SQL через файлы mod_dbd .

Сохранение сессий в браузере

В средах с высоким трафиком, где отслеживание сеанса на сервере слишком ресурсоемко или неудобно, существует возможность вместо этого сохранять содержимое сеанса в файле cookie в клиентском браузере.

Это имеет то преимущество, что на сервере требуются минимальные ресурсы для отслеживания сеансов, а нескольким серверам в ферме серверов не нужно совместно использовать информацию о сеансах.

Однако содержимое сеанса предоставляется клиенту с соответствующим риском потери конфиденциальности. Модуль mod_session_crypto можно настроить на шифрование содержимого сеанса перед записью сеанса клиенту.

Позволяет mod_session_cookie хранить пользовательские сеансы в браузере в файле cookie HTTP.

Основные примеры

Создать сеанс так же просто, как включить сеанс и решить, где он будет храниться. В этом примере сеанс будет сохранен в браузере в файле cookie с именем session .

Сеанс на основе браузера

 Сессия включена
Путь сеанса SessionCookieName=/ 

Сеанс бесполезен, если он не может быть записан или прочитан. В следующем примере показано, как значения могут быть введены в сеанс с помощью предопределенного заголовка ответа HTTP с именем X-Replace-Session .

Запись на сеанс

 Сессия включена
Путь сеанса SessionCookieName=/
SessionHeader X-Replace-Session 

Заголовок должен содержать пары «имя-значение», выраженные в том же формате, что и строка запроса в URL-адресе, как в примере ниже. Установка ключа на пустую строку приводит к удалению этого ключа из сеанса.

CGI для записи в сеанс

 #!/бин/баш
echo "Тип контента: текстовый/обычный"
echo "X-Replace-Session: key1=foo&key2=&key3=bar"
эхо
окружение 

Если настроено, сеанс может быть прочитан из переменной среды HTTP_SESSION. По умолчанию сеанс остается закрытым, поэтому его необходимо явно включить с помощью директивы SessionEnv .

Чтение с сеанса

 Сессия включена
SessionEnv Вкл.
Путь сеанса SessionCookieName=/
SessionHeader X-Replace-Session 

После чтения переменная CGI HTTP_SESSION должна содержать значение key1=foo&key3=bar .

Конфиденциальность сеанса

Используя функцию «показать файлы cookie» вашего браузера, вы бы увидели ясное текстовое представление сеанса. Это потенциально может стать проблемой, если конечному пользователю необходимо держаться в неведении о содержимом сеанса или если третья сторона может получить несанкционированный доступ к данным в рамках сеанса.

Содержимое сеанса может быть опционально зашифровано перед размещением в браузере с помощью модуля mod_session_crypto .

Зашифрованный сеанс на основе браузера

 Сессия включена
SessionCryptoPassphrase секрет
Путь сеанса SessionCookieName=/ 

Сеанс будет автоматически расшифрован при загрузке и зашифрован при сохранении с помощью Apache, базовое приложение, использующее сеанс, не должно знать, что происходит шифрование.

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

Конфиденциальность файлов cookie

Механизм файлов cookie HTTP также предлагает функции конфиденциальности, такие как возможность ограничить передачу файлов cookie только страницам, защищенным SSL, или предотвратить доступ javascript на основе браузера к содержимому файла cookie.

Предупреждение

Некоторые из функций конфиденциальности файлов cookie HTTP либо нестандартны, либо не реализованы последовательно в разных браузерах. Модули сеанса позволяют вам устанавливать параметры файлов cookie, но это не гарантирует, что браузер будет соблюдать конфиденциальность. Если вас беспокоит безопасность, используйте mod_session_crypto для шифрования содержимого сеанса или сохраните сеанс на сервере с помощью модуля mod_session_dbd .

Стандартные параметры куки можно указать после имени куки, как в примере ниже.

Настройка параметров файлов cookie

 Сессия включена
SessionCryptoPassphrase секрет
SessionCookieName путь сеанса=/частный;домен=example.com;только http;безопасный; 

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

Поддержка сеанса для аутентификации

Как и во многих серверах приложений, модули аутентификации могут использовать сеанс для хранения имени пользователя и пароля после входа в систему. Сохраняет mod_auth_form имя пользователя и пароль для входа в сеанс.

Аутентификация на основе формы

 Сессия включена
SessionCryptoPassphrase секрет
Путь сеанса SessionCookieName=/
Файл AuthFormProvider
AuthUserFile "conf/passwd"
Форма AuthType
Область AuthName
#... 

См. mod_auth_form модуль для документации и полных примеров.

Интеграция сеансов с внешними приложениями

Чтобы сеансы были полезными, должна быть возможность поделиться содержимым сеанса с внешними приложениями, и внешнее приложение должно иметь возможность написать собственный сеанс.

Типичным примером может быть приложение, которое меняет пароль пользователя, установленный mod_auth_form . Этому приложению потребуется прочитать текущее имя пользователя и пароль из сеанса, внести необходимые изменения в пароль пользователя, а затем записать новый пароль в сеанс, чтобы обеспечить плавный переход к новому паролю.

Второй пример может включать приложение, которое впервые регистрирует нового пользователя. Когда регистрация завершена, имя пользователя и пароль записываются в сеанс, обеспечивая плавный переход к входу в систему.

Модули Apache
Модули на сервере, которым требуется доступ к сеансу, могут использовать API mod_session.h для чтения и записи в сеанс. Этот механизм используется такими модулями, как mod_auth_form .
Программы CGI и языки сценариев
Приложения, работающие на веб-сервере, могут дополнительно получать значение сеанса из переменной среды HTTP_SESSION . Сеанс должен быть закодирован как строка application/x-www-form-urlencoded , как описано в спецификации HTML. Переменная окружения управляется настройкой директивы SessionEnv . Сценарий может записать сеанс, вернув заголовок ответа application/x-www-form-urlencoded с именем, заданным SessionHeader директивой. В обоих случаях любое шифрование или дешифрование, а также чтение сеанса или запись сеанса в выбранный механизм хранения обрабатываются модулями mod_session и соответствующей конфигурацией.
Приложения позади mod_proxy
Если SessionHeader директива используется для определения заголовка HTTP-запроса, сеанс, закодированный как строка application/x-www-form-urlencoded , будет доступен приложению. Если в ответе указан тот же заголовок, значение этого заголовка ответа будет использоваться для замены сеанса. Как и выше, любое шифрование или дешифрование, а также чтение сеанса или запись сеанса в выбранный механизм хранения обрабатываются модулями mod_session и соответствующей конфигурацией.
Автономные приложения
Приложения могут управлять сеансом вне контроля HTTP-сервера Apache. В этом случае приложение несет ответственность за чтение сеанса из выбранного механизма хранения, расшифровку сеанса, обновление сеанса, шифрование сеанса и запись сеанса в выбранный механизм хранения, если это необходимо.


Директива сеанса

Описание:Включает сеанс для текущего каталога или местоположения
Синтаксис: Session On|Off
По умолчанию: Session Off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Аутконфиг
Положение дел:Расширение
Модуль:mod_session

Директива Session разрешает сеанс для каталога или контейнера местоположения. Дальнейшие директивы контролируют, где будет храниться сеанс и как будет поддерживаться конфиденциальность.



Директива SessionEnv

Описание:Контролируйте, записывается ли содержимое сеанса в переменную среды HTTP_SESSION .
Синтаксис: SessionEnv On|Off
По умолчанию: SessionEnv Off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Аутконфиг
Положение дел:Расширение
Модуль:mod_session

Если установлено значение On , SessionEnv директива заставляет содержимое сеанса записываться в переменную среды CGI с именем HTTP_SESSION .

Строка записывается в формате URL-запроса, например:

key1=foo&key3=bar



Директива SessionExclude

Описание:Определить префиксы URL, для которых сеанс игнорируется
Синтаксис: SessionExclude path
По умолчанию: none
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session

Директива SessionExclude позволяет отключать сеансы только для префиксов URL. Это можно использовать, чтобы сделать веб-сайт более эффективным, нацелившись на более точное пространство URL-адресов, для которого должен поддерживаться сеанс. По умолчанию все URL-адреса в каталоге или местоположении включаются в сеанс. Директива SessionExclude имеет приоритет над SessionInclude директивой.

Предупреждение

Эта директива имеет ту же цель, что и атрибут пути в файлах cookie HTTP, но ее не следует путать с этим атрибутом. Эта директива не устанавливает атрибут пути , который необходимо настроить отдельно.



Директива заголовка сеанса

Описание:Импорт обновлений сеанса из заданного заголовка ответа HTTP
Синтаксис: SessionHeader header
По умолчанию: none
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Аутконфиг
Положение дел:Расширение
Модуль:mod_session

Директива SessionHeader определяет имя заголовка ответа HTTP, который, если он присутствует, будет проанализирован и записан в текущий сеанс.

Ожидается, что значение заголовка будет в формате запроса URL, например:

key1=foo&key2=&key3=bar

Если для ключа задана пустая строка, этот ключ будет удален из сеанса.



Директива SessionInclude

Описание:Определить префиксы URL, для которых действителен сеанс
Синтаксис: SessionInclude path
По умолчанию: all URLs
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Аутконфиг
Положение дел:Расширение
Модуль:mod_session

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

Предупреждение

Эта директива имеет ту же цель, что и атрибут пути в файлах cookie HTTP, но ее не следует путать с этим атрибутом. Эта директива не устанавливает атрибут пути , который необходимо настроить отдельно.



Директива SessionMaxAge

Описание:Определите максимальный возраст в секундах для сеанса
Синтаксис: SessionMaxAge maxage
По умолчанию: SessionMaxAge 0
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Аутконфиг
Положение дел:Расширение
Модуль:mod_session

Директива SessionMaxAge определяет срок, в течение которого сессия будет оставаться в силе. Когда сеанс сохраняется, это ограничение времени сбрасывается, и существующий сеанс может быть продолжен. Если сеанс становится старше этого предела без запроса к серверу на обновление сеанса, сеанс истечет по времени и будет удален. Если сеанс используется для хранения данных входа пользователя, это приводит к автоматическому выходу пользователя из системы по истечении заданного времени.

Установка maxage на ноль отключает истечение срока действия сеанса.



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188      189      190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru