Раздел 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 и, как таковые, могут стать жертвой атак межсайтового скриптинга или предоставить клиентам потенциально личную информацию. Пожалуйста, убедитесь, что соответствующие риски были приняты во внимание, прежде чем включать функции сеанса на вашем сервере. Этот модуль обеспечивает поддержку интерфейса сеанса пользователя на уровне сервера. Сеансы можно использовать для отслеживания того, вошел ли пользователь в систему, или для другой информации о пользователе, которая должна быть доступна для запросов. Сеансы могут храниться на сервере или в браузере. Сеансы также могут быть дополнительно зашифрованы для дополнительной безопасности. Эти функции разделены на несколько модулей в дополнение к
Сеансами можно управлять из других модулей, которые зависят от сеанса, или сеанс можно читать и записывать, используя переменные среды и заголовки HTTP, если это необходимо. Что такое сеанс?В основе интерфейса сеанса лежит таблица пар «ключ-значение», доступная для всех запросов браузера. Эти пары могут быть установлены в любую допустимую строку, если это необходимо приложению, использующему сеанс. «Сеанс» — это строка application/x-www-form-urlencoded , содержащая эти пары «ключ-значение», как определено в спецификации HTML. Сеанс может быть дополнительно зашифрован и закодирован в base64 перед записью в механизм хранения, как это определено администратором. Кому может быть полезен сеанс?Интерфейс сеанса в первую очередь разработан для использования другими серверными модулями, такими как Хранение сессий на сервереApache можно настроить для отслеживания сеансов каждого пользователя, хранящихся на определенном сервере или группе серверов. Эта функциональность аналогична сеансам, доступным на обычных серверах приложений. Если настроено, сеансы отслеживаются с помощью идентификатора сеанса, который хранится в файле cookie или извлекается из параметров, встроенных в строку запроса URL, как в типичном запросе GET. Поскольку содержимое сеанса хранится исключительно на сервере, ожидается конфиденциальность содержимого сеанса. Это влияет на производительность и ресурсы, если присутствует большое количество сеансов или когда большое количество веб-серверов должны обмениваться сеансами друг с другом. Модуль Сохранение сессий в браузереВ средах с высоким трафиком, где отслеживание сеанса на сервере слишком ресурсоемко или неудобно, существует возможность вместо этого сохранять содержимое сеанса в файле cookie в клиентском браузере. Это имеет то преимущество, что на сервере требуются минимальные ресурсы для отслеживания сеансов, а нескольким серверам в ферме серверов не нужно совместно использовать информацию о сеансах. Однако содержимое сеанса предоставляется клиенту с соответствующим риском потери конфиденциальности. Модуль
Позволяет Основные примерыСоздать сеанс так же просто, как включить сеанс и решить, где он будет храниться. В этом примере сеанс будет сохранен в браузере в файле cookie с именем Сеанс на основе браузераСессия включена Путь сеанса SessionCookieName=/ Сеанс бесполезен, если он не может быть записан или прочитан. В следующем примере показано, как значения могут быть введены в сеанс с помощью предопределенного заголовка ответа HTTP с именем
Запись на сеансСессия включена Путь сеанса SessionCookieName=/ SessionHeader X-Replace-Session Заголовок должен содержать пары «имя-значение», выраженные в том же формате, что и строка запроса в URL-адресе, как в примере ниже. Установка ключа на пустую строку приводит к удалению этого ключа из сеанса. CGI для записи в сеанс#!/бин/баш echo "Тип контента: текстовый/обычный" echo "X-Replace-Session: key1=foo&key2=&key3=bar" эхо окружение Если настроено, сеанс может быть прочитан из переменной среды HTTP_SESSION. По умолчанию сеанс остается закрытым, поэтому его необходимо явно включить с помощью директивы
Чтение с сеансаСессия включена SessionEnv Вкл. Путь сеанса SessionCookieName=/ SessionHeader X-Replace-Session После чтения переменная CGI Конфиденциальность сеансаИспользуя функцию «показать файлы cookie» вашего браузера, вы бы увидели ясное текстовое представление сеанса. Это потенциально может стать проблемой, если конечному пользователю необходимо держаться в неведении о содержимом сеанса или если третья сторона может получить несанкционированный доступ к данным в рамках сеанса. Содержимое сеанса может быть опционально зашифровано перед размещением в браузере с помощью модуля Зашифрованный сеанс на основе браузераСессия включена SessionCryptoPassphrase секрет Путь сеанса SessionCookieName=/ Сеанс будет автоматически расшифрован при загрузке и зашифрован при сохранении с помощью Apache, базовое приложение, использующее сеанс, не должно знать, что происходит шифрование. Сессии, хранящиеся на сервере, а не в браузере, также могут быть зашифрованы по мере необходимости, обеспечивая конфиденциальность, когда потенциально конфиденциальная информация передается между веб-серверами в ферме серверов с помощью модуля Конфиденциальность файлов cookieМеханизм файлов cookie HTTP также предлагает функции конфиденциальности, такие как возможность ограничить передачу файлов cookie только страницам, защищенным SSL, или предотвратить доступ javascript на основе браузера к содержимому файла cookie. ПредупреждениеНекоторые из функций конфиденциальности файлов cookie HTTP либо нестандартны, либо не реализованы последовательно в разных браузерах. Модули сеанса позволяют вам устанавливать параметры файлов cookie, но это не гарантирует, что браузер будет соблюдать конфиденциальность. Если вас беспокоит безопасность, используйте
Стандартные параметры куки можно указать после имени куки, как в примере ниже. Настройка параметров файлов cookieСессия включена SessionCryptoPassphrase секрет SessionCookieName путь сеанса=/частный;домен=example.com;только http;безопасный; В тех случаях, когда сервер Apache формирует внешний интерфейс для внутренних исходных серверов, можно удалить файлы cookie сеанса из входящих заголовков HTTP с помощью директивы Поддержка сеанса для аутентификацииКак и во многих серверах приложений, модули аутентификации могут использовать сеанс для хранения имени пользователя и пароля после входа в систему. Сохраняет
Аутентификация на основе формыСессия включена SessionCryptoPassphrase секрет Путь сеанса SessionCookieName=/ Файл AuthFormProvider AuthUserFile "conf/passwd" Форма AuthType Область AuthName #... См. Интеграция сеансов с внешними приложениямиЧтобы сеансы были полезными, должна быть возможность поделиться содержимым сеанса с внешними приложениями, и внешнее приложение должно иметь возможность написать собственный сеанс. Типичным примером может быть приложение, которое меняет пароль пользователя, установленный
Второй пример может включать приложение, которое впервые регистрирует нового пользователя. Когда регистрация завершена, имя пользователя и пароль записываются в сеанс, обеспечивая плавный переход к входу в систему.
Директива сеанса
Директива Директива SessionEnv
Если установлено значение On , Строка записывается в формате URL-запроса, например: Директива SessionExclude
Директива ПредупреждениеЭта директива имеет ту же цель, что и атрибут пути в файлах cookie HTTP, но ее не следует путать с этим атрибутом. Эта директива не устанавливает атрибут пути , который необходимо настроить отдельно. Директива заголовка сеанса
Директива Ожидается, что значение заголовка будет в формате запроса URL, например: Если для ключа задана пустая строка, этот ключ будет удален из сеанса. Директива SessionInclude
Директива ПредупреждениеЭта директива имеет ту же цель, что и атрибут пути в файлах cookie HTTP, но ее не следует путать с этим атрибутом. Эта директива не устанавливает атрибут пути , который необходимо настроить отдельно. Директива 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 |