set_encrypt_session

Директива `set_encrypt_session` шифрует заданное значение переменной и присваивает его другой переменной, что позволяет безопасно обрабатывать данные в NGINX.

Синтаксисset_encrypt_session name $var; or set_encrypt_session name $var timeout;
По умолчаниюnone
Контекстhttp, server, location, if in server, if in location
Аргументы1-2

Описание

Директива set_encrypt_session позволяет шифровать значения переменных в NGINX с использованием AES-256, обеспечивая дополнительный уровень защиты для конфиденциальных данных, таких как пользовательские сессии. Она принимает один или два аргумента: первый аргумент — имя переменной, в которой будет храниться зашифрованное значение, а второй аргумент — переменная, содержащая исходные данные для шифрования. Если указан только один аргумент, NGINX предполагает, что исходные данные берутся из предопределённого источника, часто посредством других директив. Этот механизм важен в сценариях, требующих безопасного управления информацией о пользователях в веб‑приложениях, особенно в сочетании с обработкой сессий.

При настройке директива использует указанный ключ шифрования и вектор инициализации (IV), которые должны соответствовать требованиям по длине для корректной работы. Пользователи также могут задать длительность, в течение которой зашифрованная сессия остаётся действительной. Директива обычно применяется в директивах location, предназначенных для обработки чувствительных транзакций, чтобы незашифрованные данные не сохранялись дольше необходимого в конфигурации NGINX. Неправильная настройка, например несоответствующая длина ключа или игнорирование сроков истечения сессий, может поставить под угрозу безопасность или привести к недоступности данных сессий для пользователей.

Пример конфига

location /encrypt {
    set $raw 'text to be encrypted';
    set_encrypt_session $session $raw;
    add_header Set-Cookie 'my_login=$session';
}

Убедитесь, что ключ шифрования имеет длину ровно 32 байта для AES-256.

Вектор инициализации (IV) не должен превышать 16 байт; в противном случае шифрование завершится с ошибкой.

При неправильном использовании расшифрованные значения могут привести к рискам для безопасности или к неопределённым состояниям.

← Ко всем директивам