set_encrypt_session
Директива `set_encrypt_session` шифрует заданное значение переменной и присваивает его другой переменной, что позволяет безопасно обрабатывать данные в NGINX.
Описание
Директива 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 байт; в противном случае шифрование завершится с ошибкой.
При неправильном использовании расшифрованные значения могут привести к рискам для безопасности или к неопределённым состояниям.