secure_link_hmac

Директива secure_link_hmac настраивает защищённые ссылки на основе HMAC для NGINX, позволяя обеспечить безопасный доступ к ресурсам с возможностью указать время истечения.

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

Описание

Директива secure_link_hmac является частью Alternative NGINX HMAC Secure Link module, которая расширяет стандартную функциональность защищённых ссылок NGINX, используя HMAC (Hash-based Message Authentication Code) для генерации защищённых токенов. Указав один аргумент, эта директива позволяет пользователю определить переменную, содержащую защищённый токен, который может включать параметры, специфичные для запроса, такие как метка времени и период действия. HMAC-токен генерируется с использованием секретного ключа, сообщения, которое обычно объединяет URI запроса, метку времени и период действия, и заданного алгоритма хеширования, поддерживаемого OpenSSL, например SHA256 или SHA512.

При обработке запроса NGINX вычисляет HMAC от сообщения, используя предоставленный секрет и алгоритм. Затем он сверяет его с токеном, предоставленным в запросе. Если вычисленный HMAC совпадает с токеном и ссылка не истекла, доступ предоставляется; в противном случае запрос отклоняется. Этот механизм позволяет тонко контролировать доступность ресурсов, поскольку ссылки можно настроить на истечение через заданный промежуток времени, что обеспечивает дополнительный уровень защиты от несанкционированного доступа к чувствительным ресурсам.

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

location ^~ /files/ {
    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;
    }
    rewrite ^/files/(.*)$ /files/$1 break;
}

Убедитесь, что секретный ключ хранится в безопасности и не попадает в журналы.

Время истечения срока действия должно быть правильно отформатировано и корректно управляться; по возможности используйте время UTC.

HMAC token должен генерироваться с теми же настройками; несоответствие приведет к отказу в доступе.

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