secure_link_hmac_message

Директива `secure_link_hmac_message` задаёт сообщение, которое будет хешировано с помощью HMAC для проверки защищённой ссылки.

Синтаксисsecure_link_hmac_message string;
По умолчаниюnone
Контекстhttp, server, location
Аргументы1

Описание

Директива secure_link_hmac_message является частью модуля NGINX HMAC Secure Link, который повышает безопасность ссылок, создавая защищённый токен, использующий HMAC и различные алгоритмы хеширования, поддерживаемые OpenSSL. Директива задаёт сообщение, которое будет хешироваться, как правило, составленное из конфиденциальной информации, критически важной для проверки подлинности запроса или ссылки. Сообщение обычно структурируется так, чтобы включать такие элементы, как запрошенный URI, временную метку и необязательный период истечения срока действия ссылки.

Когда защищённая ссылка генерируется, HMAC вычисляется по сообщению и секретному ключу, задаваемому директивой secure_link_hmac_secret. Такой подход значительно безопаснее простых хеш-функций, поскольку включает криптографический механизм целостности и подлинности сообщения, как описано в RFC2104. В результате директива secure_link_hmac_message задаёт сообщение, которое будет подвергаться HMAC-хешированию, позволяя NGINX проверять целостность запросов на предмет возможных попыток подмены.

Директива принимает один аргумент, который должен быть сложной переменной, определяющей, каким должно быть сообщение, например, "$uri|$arg_ts|$arg_e", гарантируя, что правильные параметры будут захешированы в защищённый токен. Полученный результат используется вместе с другими директивами, такими как secure_link_hmac и secure_link_hmac_secret, для эффективной аутентификации запросов.

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

location /protected {
    secure_link_hmac "$arg_st,$arg_ts,$arg_e";
    secure_link_hmac_secret "my_secret_key";
    secure_link_hmac_message "$uri|$arg_ts|$arg_e";
    secure_link_hmac_algorithm sha256;

    if ($secure_link_hmac != "1") {
        return 404;
    }
    # Further handling
}

Убедитесь, что secure_link_hmac_secret определён; в противном случае проверка HMAC не пройдёт.

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

При реализации срока действия убедитесь, что timestamp правильно отформатирован, иначе token может не пройти проверку.

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