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  

Пункт 192. Модуль Apache mod_session_dbd

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

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

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

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

Различные веб-серверы в ферме серверов могут совместно использовать базу данных и, таким образом, совместно использовать сеансы друг с другом.

Дополнительные сведения об интерфейсе сеанса см. в документации к модулю mod_session .

Конфигурация ДБД

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

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

Пример конфигурации DBD

 DBDriver pgsql
DDBParams "dbname=apachesession user=apache password=xxxxx host=localhost"
DBDPrepareSQL «удалить из сеанса, где ключ = %s»
DBDPrepareSQL «установить значение сеанса обновления = %s, срок действия = %lld, ключ = %s, где ключ = %s» updatesession
DBDPrepareSQL «вставить в сеанс (значение, срок действия, ключ) значения (%s, %lld, %s)» insertsession
DBDPrepareSQL "выбрать значение из сеанса, где ключ = %s и (истечение срока действия = 0 или срок действия > %lld)" selectsession
DBDPrepareSQL «удалить из сеанса, где срок действия != 0 и срок действия < %lld» очищает 

Анонимные сеансы

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

Чтобы создать простой анонимный сеанс и сохранить его в таблице базы данных postgres с именем apachesession и сохранить идентификатор сеанса в файле cookie с именем session , настройте сеанс следующим образом:

Анонимный сеанс на основе SQL

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

Дополнительные примеры того, как сеанс может быть настроен для чтения и записи приложением CGI, см. в mod_session разделе примеров.

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

За сеансы пользователя

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

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

Чтобы создать простой сеанс для каждого пользователя и сохранить его в таблице базы данных postgres с именем apachesession , а также с сеансом, привязанным к идентификатору пользователя, настройте сеанс следующим образом:

SQL на основе сеанса пользователя

 Сессия включена
SessionDBDPerUser включен 

Ведение базы данных

Можно ожидать, что с течением времени база данных начнет накапливать сеансы с истекшим сроком действия. На данный момент mod_session_dbd модуль еще не может автоматически обрабатывать истечение сеанса.

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

Администратору потребуется настроить внешний процесс через cron для очистки сеансов с истекшим сроком действия.



Директива SessionDBDCookieName

Описание:Имя и атрибуты файла cookie RFC2109, в котором хранится идентификатор сеанса.
Синтаксис: SessionDBDCookieName name attributes
По умолчанию: none
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session_dbd

Директива SessionDBDCookieName определяет имя и необязательные атрибуты файла cookie, совместимого с RFC2109, в котором будет храниться идентификатор сеанса. Файлы cookie RFC2109 устанавливаются с использованием Set-Cookie заголовка HTTP.

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

Куки с атрибутами

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


Директива SessionDBDCookieName2

Описание:Имя и атрибуты файла cookie RFC2965, в котором хранится идентификатор сеанса.
Синтаксис: SessionDBDCookieName2 name attributes
По умолчанию: none
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session_dbd

Директива SessionDBDCookieName2 определяет имя и необязательные атрибуты файла cookie, совместимого с RFC2965, в котором будет храниться идентификатор сеанса. Файлы cookie RFC2965 устанавливаются с использованием Set-Cookie2 заголовка HTTP.

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

Cookie2 с атрибутами

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


Директива SessionDBDCookieRemove

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

Флаг SessionDBDCookieRemove определяет, будут ли файлы cookie, содержащие идентификатор сеанса, удаляться из заголовков во время обработки запроса.

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



Директива SessionDBDDeleteLabel

Описание:SQL-запрос для удаления сеансов из базы данных.
Синтаксис: SessionDBDDeleteLabel label
По умолчанию: SessionDBDDeleteLabel deletesession
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session_dbd

Директива SessionDBDDeleteLabel устанавливает метку запроса на удаление по умолчанию, которая будет использоваться для удаления просроченного или пустого сеанса. Эта метка должна быть предварительно определена с помощью DBDPrepareSQL директивы.



Директива SessionDBDInsertLabel

Описание:SQL-запрос, используемый для вставки сеансов в базу данных.
Синтаксис: SessionDBDInsertLabel label
По умолчанию: SessionDBDInsertLabel insertsession
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session_dbd

Директива SessionDBDInsertLabel устанавливает метку запроса вставки по умолчанию, которая будет использоваться для загрузки в сеансе. Эта метка должна быть предварительно определена с помощью DBDPrepareSQL директивы.

Если попытка обновления сеанса не затрагивает ни одной строки, будет вызван этот запрос для вставки сеанса в базу данных.



Директива SessionDBDPerUser

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

Флаг SessionDBDPerUser включает сессию каждого пользователя, связанную с именем входа пользователя. Если пользователь не вошел в систему, эта директива будет проигнорирована.



Директива SessionDBDSelectLabel

Описание:SQL-запрос для выбора сеансов из базы данных
Синтаксис: SessionDBDSelectLabel label
По умолчанию: SessionDBDSelectLabel selectsession
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session_dbd

Директива SessionDBDSelectLabel устанавливает метку запроса выбора по умолчанию, которая будет использоваться для загрузки в сеансе. Эта метка должна быть предварительно определена с помощью DBDPrepareSQL директивы.



Директива SessionDBDUpdateLabel

Описание:SQL-запрос для обновления существующих сеансов в базе данных.
Синтаксис: SessionDBDUpdateLabel label
По умолчанию: SessionDBDUpdateLabel updatesession
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:Расширение
Модуль:mod_session_dbd

Директива SessionDBDUpdateLabel устанавливает метку запроса на обновление по умолчанию, которая будет использоваться для загрузки в сеансе. Эта метка должна быть предварительно определена с помощью DBDPrepareSQL директивы.

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



 <         > 

Пункты:   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