Перейти к основному содержанию
Ctrl+K
Angie
Продукты
  • Все продукты
  • Angie PRO
  • Angie
  • ANIC
  • Angie ADC
Документация
  • Все продукты
  • Angie и Angie PRO
  • ANIC
  • Angie ADC
Поддержка
  • Техническая поддержка
  • Профессиональные услуги
  • Форум
Компания
  • О нас
  • Новости
  • Вакансии
  • Контакты
  • Партнеры
  • Правовые документы
  • Новости
  • Поддержка
Ctrl+K
EN
简中
Главная Документация О веб-сервере Angie Настройка Встроенные модули HTTP-модуль Secure Link
  • Документация
  • Продукты
  • О решении Angie Ingress Controller
  • Поддержка и услуги
  • О нас
  • Правовые документы

  • О проекте
    • Версии Angie
    • Версии Angie PRO
  • Установка
    • Пакеты
    • Docker
    • Исходный код
    • Angie PRO
    • Сторонние модули
      • Auth JWT
      • Auth LDAP
      • Auth PAM
      • Auth SPNEGO
      • Brotli
      • Cache Purge
      • CGI
      • DAV Ext
      • Echo
      • Enhanced Memcached
      • Eval
      • GeoIP2
      • Headers More
      • Index
      • Keyval
      • ModSecurity
      • NDK
      • OpenTracing
      • OTel
      • Postgres
      • Redis2
      • RTMP
      • Set Misc
      • Subs
      • Unbrotli
      • VOD
      • VTS
      • Zstandard
    • Другие источники
  • Настройка
    • Конфигурация
    • Управление
    • Обработка соединений
    • Модули
      • Основной модуль
      • HTTP-модуль
        • Access
        • ACME
        • Addition
        • API
        • Auth Basic
        • Auth Request
        • AutoIndex
        • Browser
        • Charset
        • DAV
        • Empty GIF
        • FastCGI
        • FLV
        • Geo
        • GeoIP
        • gRPC
        • GunZIP
        • GZip
        • GZip Static
        • Headers
        • Image Filter
        • Index
        • JS
        • Limit Conn
        • Limit Req
        • Log
        • Map
        • Memcached
        • Mirror
        • MP4
        • Perl
        • Prometheus
        • Proxy
        • Random Index
        • RealIP
        • Referer
        • Rewrite
        • SCGI
        • Secure Link
        • Slice
        • Split Clients
        • SSI
        • SSL
        • Stub Status
        • Sub
        • Upstream
        • Upstream Probe
        • UserID
        • uWSGI
        • HTTP/2
        • HTTP/3
        • XSLT
      • Потоковый модуль
        • Access
        • Geo
        • GeoIP
        • JS
        • Limit Conn
        • Log
        • Map
        • MQTT Preread
        • Pass
        • Proxy
        • RDP Preread
        • RealIP
        • Return
        • Set
        • Split Clients
        • SSL
        • SSL Preread
        • Upstream
        • Upstream Probe
      • Почтовый модуль
        • AUTH HTTP
        • IMAP
        • POP3
        • Proxy
        • RealIP
        • SMTP
        • SSL
      • Модуль Google PerfTools
      • Модуль WASM
        • WAMR
        • Wasmtime
    • Директивы
    • Переменные
    • Миграция с nginx
    • Настройка ACME
    • Настройка SSL
    • Панель Console Light
    • Панель Prometheus
  • Отладка
  • Разработка

Secure Link#

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

Правильность запрашиваемой ссылки проверяется сравнением переданного в запросе значения контрольной суммы со значением, вычисляемым для запроса. Если ссылка имеет ограниченный срок действия и он истек, ссылка считается устаревшей. Результат этих проверок делается доступным в переменной $secure_link.

Модуль реализует два альтернативных режима работы. В первом режиме, который включается директивой secure_link_secret, можно проверить аутентичность запрашиваемых ссылок и защитить их от несанкционированного доступа. Второй режим включается директивами secure_link и secure_link_md5, и позволяет также ограничить срок действия ссылок.

При сборке из исходного кода модуль не собирается по умолчанию; его необходимо включить с помощью параметра сборки ‑‑with‑http_secure_link_module. В пакетах и образах из наших репозиториев модуль включен в сборку.

Директивы#

secure_link#

Синтаксис

secure_link выражение;

По умолчанию

—

Контекст

http, server, location

Задает строку с переменными, из которой будет выделено значение контрольной суммы и время действия ссылки.

Используемые в выражении переменные обычно связаны с запросом; см. пример ниже.

Выделенное из строки значение контрольной суммы сравнивается со значением MD5-хэша, вычисляемым для выражения, заданного директивой secure_link_md5.

Если контрольные суммы не совпадают, значением переменной $secure_link становится пустая строка. Если контрольные суммы совпадают, проверяется время действия ссылки.

Если срок действия ссылки задан и истек, переменная $secure_link получает значение 0. В противном случае она получает значение 1. Значение MD5-хэша передается в запросе закодированным в base64url.

Если ссылка имеет ограниченный срок действия, время ее действия задается в секундах с начала эпохи (1 января 1970 года 00:00:00 GMT). Значение указывается в выражении после MD5-хэша и отделяется от него запятой. Время действия ссылки, переданное в запросе, делается доступным в переменной $secure_link_expires для использования в директиве secure_link_md5. Если время действия ссылки не задано, ссылка имеет неограниченный срок действия.

secure_link_md5#

Синтаксис

secure_link_md5 выражение;

По умолчанию

—

Контекст

http, server, location

Задает выражение, для которого считается значение MD5-хэша, сравниваемое с переданным в запросе.

Выражение должно содержать защищаемую часть ссылки (ресурс) и секретную составляющую. Если ссылка имеет ограниченный срок действия, выражение также должно содержать $secure_link_expires.

Для предотвращения несанкционированного доступа выражение может содержать информацию о клиенте, например, его адрес и версию браузера.

Пример:

location /s/ {
    secure_link $arg_md5,$arg_expires;
    secure_link_md5 "$secure_link_expires$uri$remote_addr secret";

    if ($secure_link = "") {
        return 403;
    }

    if ($secure_link = "0") {
        return 410;
    }

#    ...
}

Ссылка "/s/link?md5=_e4Nc3iduzkWRm01TBBNYw&expires=2147483647" ограничивает доступ к "/s/link" для клиента с IP-адресом 127.0.0.1. Ссылка также имеет ограниченный срок действия до 19 января 2038 года (GMT).

Значение аргумента запроса md5 на UNIX можно получить так:

echo -n '2147483647/s/link127.0.0.1 secret' | \
    openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =

secure_link_secret#

Синтаксис

secure_link_secret слово;

По умолчанию

—

Контекст

location

Задает секретное слово для проверки аутентичности запрашиваемых ссылок.

Полный URI запрашиваемой ссылки выглядит так:

/префикс/хэш/ссылка

где хэш — MD5-хэш в шестнадцатеричном виде, вычисленный для конкатенации ссылки и секретного слова, а префикс — произвольная строка без косых черт.

Если запрашиваемая ссылка проходит проверку на аутентичность, значением переменной $secure_link становится ссылка, выделенная из URI запроса. В противном случае значением переменной $secure_link становится пустая строка.

Пример:

location /p/ {
    secure_link_secret secret;

    if ($secure_link = "") {
        return 403;
    }

    rewrite ^ /secure/$secure_link;
}

location /secure/ {
    internal;
}

По запросу "/p/5e814704a28d9bc1914ff19fa0c4a00a/link" будет выполнено внутреннее перенаправление на "/secure/link".

Значение хэша для данного примера на UNIX можно получить так:

echo -n 'linksecret' | openssl md5 -hex

Встроенные переменные#

$secure_link#

Результат проверки ссылки. Конкретное значение зависит от выбранного режима работы.

$secure_link_expires#

Время действия ссылки, переданное в запросе. Предназначено исключительно для использования в директиве secure_link_md5.

Содержание
  • Директивы
    • secure_link
    • secure_link_md5
    • secure_link_secret
  • Встроенные переменные
    • $secure_link
    • $secure_link_expires

Контакты

+7 (495) 120 50 33
info@wbsrv.ru
Новости в TG

Правовая информация

ИНН: 9704151517
ОГРН: 1227700436578
Правовые документы
Правила использования сайта

Продукты и документация

Angie
Angie PRO
ANIC
Angie ADC
Документация

Поддержка

Техническая поддержка
Профессиональные услуги
Форум
Поддержка в TG