Contents Menu Expand Light mode Dark mode Auto light/dark mode
документация Angie PRO 1.1.0
Logo
  • Добро пожаловать
  • Установка
  • Управление
  • Как работает Angie
  • Конфигурация
  • Директивы
    • Модуль API
    • Модуль core
    • Модули http
      • Модуль http_access
      • Модуль http_addition
      • Модуль http_auth_basic
      • Модуль http_auth_request
      • Модуль http_autoindex
      • Модуль http_browser
      • Модуль http_charset
      • Модуль http_core
      • Модуль http_dav
      • Модуль http_empty_gif
      • Модуль http_fastcgi
      • Модуль http_flv
      • Модуль http_geo
      • Модуль http_geoip
      • Модуль http_grpc
      • Модуль http_gunzip
      • Модуль http_gzip
      • Модуль http_gzip_static
      • Модуль http_headers
      • Модуль http_image_filter
      • Модуль http_random_index
      • Модуль http_js
      • Модуль http_limit_conn
      • Модуль http_limit_req
      • Модуль http_log
      • Модуль http_map
      • Модуль http_memcached
      • Модуль http_mirror
      • Модуль http_mp4
      • Модуль http_perl
      • Модуль http_proxy
      • Модуль http_random_index
      • Модуль http_realip
      • Модуль http_referer
      • Модуль http_rewrite
      • Модуль http_scgi
      • Модуль http_secure_link
      • Модуль http_slice
      • Модуль http_split_clients
      • Модуль http_ssi
      • Модуль http_ssl
      • Модуль http_stub_status
      • Модуль http_sub
      • Модуль http_upstream
      • Модуль http_upstream_sticky
      • Модуль http_userid
      • Модуль http_uwsgi
      • Модуль http_v2
      • Модуль http_xslt
    • Модули stream
      • Модуль stream_access
      • Модуль stream_core
      • Модуль stream_geo
      • Модуль stream_geoip
      • Модуль stream_js
      • Модуль stream_limit_conn
      • Модуль stream_log
      • Модуль stream_map
      • Модуль stream_proxy
      • Модуль stream_realip
      • Модуль stream_return
      • Модуль stream_set
      • Модуль stream_split_clients
      • Модуль stream_ssl
      • Модуль stream_ssl_preread
      • Модуль stream_upstream
    • Модули mail
      • Модуль mail_core
      • Модуль mail_auth_http
      • Модуль mail_proxy
      • Модуль mail_realip
      • Модуль mail_ssl
      • Модуль mail_imap
      • Модуль mail_pop3
      • Модуль mail_smtp
    • Алфавитный указатель
    • Переменные A-Z
  • Контакты
Back to top

Модуль http_secure_link#

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

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

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

Директивы#

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.

Next
Модуль http_slice
Previous
Модуль http_scgi
© Copyright 2023, Web Server LLC.
On this page
  • Модуль http_secure_link
    • Директивы
      • secure_link
      • secure_link_md5
      • secure_link_secret
    • Встроенные переменные
      • $secure_link
      • $secure_link_expires