secure_link_md5

Директива `secure_link_md5` генерирует и проверяет MD5-хэши для защищённых ссылок на файлы. — NGINX HTTP Core

secure_link_md5
httpserverlocation
Синтаксисsecure_link_md5 string;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `secure_link_md5` используется для реализации метода защищённого контроля доступа к файлам в NGINX. Это в основном применяется для защиты ресурсов от несанкционированного доступа путём генерации MD5-хэша на основе заранее заданного секретного ключа, конкретного URI запроса и метки времени. Когда поступает запрос к ресурсу, директива сравнивает сгенерированный хэш с переданным в запросе хэшем, чтобы проверить подлинность и действительность ссылки. Если хэши совпадают и метка времени находится в допустимом диапазоне, доступ разрешается; в противном случае — отклоняется. Параметр для `secure_link_md5` — это строка, которая должна содержать секретный ключ, URI и время истечения. Время истечения определяет, как долго сгенерированная ссылка остаётся действительной, повышая безопасность за счёт ограничения срока использования ссылки. Это особенно полезно в сценариях, когда доступ к чувствительным ресурсам необходим, но не должен быть широко доступен, например при скачивании файлов или доступе к премиум-контенту. Для эффективного использования этой директивы необходимо убедиться, что на стороне сервера и на стороне клиента используются одинаковый алгоритм хеширования и параметры, чтобы обеспечивать согласованность и безопасность между сгенерированными и отправленными MD5-хэшами. Директива может быть настроена в нескольких контекстах, включая `http`, `server` и `location`, что позволяет гибко реализовать её в зависимости от структуры приложения.

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

location /private {
    secure_link_md5 "$arg_md5$uri$time$remote_addr";
    secure_link "";
    if ($secure_link = 0) {
        return 403;
    }
    # Protected resource access would follow
}

Убедитесь, что алгоритм хеширования одинаков в реализациях сервера и клиента.

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

Всегда используйте защищённые (https) соединения, чтобы предотвратить перехват данных, передаваемых по ссылке.