auth_hash

Директива 'auth_hash' включает функцию аутентификации по хешу защищённых ссылок в NGINX, позволяя использовать защищённые ссылки на основе хешей.

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

Описание

Директива auth_hash активирует аутентификацию защищённых ссылок по хешу, позволяя пользователям защищать ресурсы, к которым осуществляется доступ через NGINX. Включив эту директиву, сервер NGINX будет вычислять защищённый хеш на основе сообщения, которое включает конфиденциальные данные, такие как URI и секретные ключи, в сочетании со значениями временных меток или периодами истечения срока действия. Этот хеш затем используется как токен для проверки запросов, гарантируя, что только авторизованные запросы с действительными токенами смогут получить доступ к защищённым ресурсам.

Функция хеширования также использует настройки, такие как auth_hash_message, чтобы указать точные компоненты, включаемые в генерацию хеша. Директива auth_hash_secret задаёт секретный ключ, используемый для вычисления хеша, а параметры вроде auth_hash_algorithm определяют криптографический алгоритм, применяемый для хеширования, который может включать различные варианты, доступные через OpenSSL. Такая конфигурация не только облегчает создание защищённых ссылок, но и вводит временные ограничения для действительности ссылок с помощью необязательных параметров, определяющих начало и конец периода действительности ссылки, что усиливает общую безопасность веб-ресурсов, обслуживаемых NGINX.

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

location ^~ /files/ {
    auth_hash on;

    auth_hash_check_time $arg_ts range_end=$arg_e format=%s;
    auth_hash_check_token $arg_st format=hex;
    auth_hash_secret "my_secret_key";
    auth_hash_message "$uri|$arg_ts|$arg_e|$auth_hash_secret";
    auth_hash_algorithm sha256;

    if ($auth_hash != "1") {
        return 403;
    }
    rewrite ^/files/(.*)$ /files/$1 break;
}

Убедитесь, что предоставленный hashing algorithm поддерживается OpenSSL, иначе directive не сможет вычислить hash.

Всегда используйте безопасный и сложный secret key, чтобы предотвратить hash collisions или brute-force attacks.

Будьте осторожны с используемыми date formats и time values, чтобы предотвратить недействительные hash calculations,

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