Раздел 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 и, как таковые, могут стать жертвой атак межсайтового скриптинга или предоставить клиентам потенциально личную информацию. Пожалуйста, убедитесь, что соответствующие риски были приняты во внимание, прежде чем включать функции сеанса на вашем сервере. Этот подмодуль Сеансы могут быть либо анонимными , когда сеанс определяется уникальной строкой UUID, хранящейся в браузере в файле cookie, либо для каждого пользователя , когда сеанс определяется идентификатором пользователя, вошедшего в систему. Сеансы на основе SQL скрыты от браузера и, таким образом, обеспечивают определенную степень конфиденциальности без необходимости шифрования. Различные веб-серверы в ферме серверов могут совместно использовать базу данных и, таким образом, совместно использовать сеансы друг с другом. Дополнительные сведения об интерфейсе сеанса см. в документации к модулю Конфигурация ДБДПрежде чем Существует четыре запроса, необходимых для поддержания сеанса, для выбора существующего сеанса, для обновления существующего сеанса, для вставки нового сеанса и для удаления просроченного или пустого сеанса. Эти запросы настроены в соответствии с примером ниже. Пример конфигурации DBDDBDriver 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, см. в
Документацию о том, как сеанс можно использовать для хранения сведений об имени пользователя и пароле, см. в За сеансы пользователяСеансы для каждого пользователя привязываются к имени пользователя, успешно прошедшего проверку подлинности. Он обеспечивает наибольшую конфиденциальность, поскольку за пределами аутентифицированной области не существует внешнего дескриптора сеанса. Сеансы для каждого пользователя работают в правильно настроенной аутентифицированной среде, будь то базовая аутентификация, дайджест-аутентификация или клиентские сертификаты SSL. Из-за ограничений того, кто пришел первым, курица или яйцо, сеансы пользователей не могут использоваться для хранения учетных данных аутентификации из модуля, такого как
Чтобы создать простой сеанс для каждого пользователя и сохранить его в таблице базы данных postgres с именем apachesession , а также с сеансом, привязанным к идентификатору пользователя, настройте сеанс следующим образом: SQL на основе сеанса пользователяСессия включена SessionDBDPerUser включен Ведение базы данныхМожно ожидать, что с течением времени база данных начнет накапливать сеансы с истекшим сроком действия. На данный момент ПредупреждениеАдминистратору потребуется настроить внешний процесс через cron для очистки сеансов с истекшим сроком действия. Директива SessionDBDCookieName
Директива Можно указать необязательный список атрибутов cookie, как показано в примере ниже. Эти атрибуты вставляются в файл cookie как есть и не интерпретируются Apache. Убедитесь, что ваши атрибуты определены правильно в соответствии со спецификацией файлов cookie. Куки с атрибутамиСессия включена SessionDBDCookieName путь сеанса=/частный;домен=example.com;только http;безопасный;версия=1; Директива SessionDBDCookieName2
Директива Можно указать необязательный список атрибутов cookie, как показано в примере ниже. Эти атрибуты вставляются в файл cookie как есть и не интерпретируются Apache. Убедитесь, что ваши атрибуты определены правильно в соответствии со спецификацией файлов cookie. Cookie2 с атрибутамиСессия включена Путь сеанса SessionDBDCookieName2=/частный;домен=example.com;только http;безопасный;версия=1; Директива SessionDBDCookieRemove
Флаг В ситуации с обратным прокси-сервером, когда сервер Apache действует как серверный интерфейс для внутреннего исходного сервера, раскрытие содержимого файла cookie идентификатора сеанса для внутреннего интерфейса может быть потенциальным нарушением конфиденциальности. Если этот параметр включен, файл cookie идентификатора сеанса будет удален из входящих заголовков HTTP. Директива SessionDBDDeleteLabel
Директива Директива SessionDBDInsertLabel
Директива Если попытка обновления сеанса не затрагивает ни одной строки, будет вызван этот запрос для вставки сеанса в базу данных. Директива SessionDBDPerUser
Флаг Директива SessionDBDSelectLabel
Директива Директива SessionDBDUpdateLabel
Директива Если попытка обновления сеанса не затрагивает ни одной строки, будет вызван запрос на вставку для вставки сеанса в базу данных. Если база данных поддерживает 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 |