auth_hash
Директива 'auth_hash' включает функцию аутентификации по хешу защищённых ссылок в NGINX, позволяя использовать защищённые ссылки на основе хешей.
Описание
Директива 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,