Модуль ngx_http_secure_link_module |
Разделы
|
||||||||||||||||||
Модуль
Правильность запрашиваемой ссылки проверяется сравнением переданного
в запросе значения контрольной суммы со значением,
вычисляемым для запроса.
Если ссылка имеет ограниченный срок действия и он истёк,
ссылка считается устаревшей.
Результат этих проверок делается доступным в переменной
Модуль реализует два альтернативных режима работы. В первом режиме, который включается директивой secure_link_secret, можно проверить аутентичность запрашиваемых ссылок и защитить их от несанкционированного доступа. Второй режим (0.8.50) включается директивами secure_link и secure_link_md5, и позволяет также ограничить срок действия ссылок.
По умолчанию этот модуль не собирается, его сборку необходимо
разрешить с помощью конфигурационного параметра
Директивы
Задаёт строку с переменными, из которой будет выделено значение контрольной суммы и время действия ссылки. Используемые в выражении переменные обычно связаны с запросом; см. пример ниже.
Выделенное из строки значение контрольной суммы сравнивается со
значением MD5-хэша, вычисляемым для выражения, заданного
директивой secure_link_md5.
Если контрольные суммы не совпадают, значением переменной
Если ссылка имеет ограниченный срок действия, время её действия
задаётся в секундах с начала эпохи (1 января 1970 года 00:00:00 GMT).
Значение указывается в выражении после MD5-хэша
и отделяется от него запятой.
Время действия ссылки, переданное в запросе, делается доступным
в переменной
Задаёт выражение, для которого считается значение MD5-хэш, сравниваемое с переданным в запросе.
Выражение должно содержать защищаемую часть ссылки (ресурс)
и секретную составляющую.
Если ссылка имеет ограниченный срок действия,
выражение также должно содержать Для предотвращения несанкционированного доступа выражение может содержать информацию о клиенте, например, его адрес и версию браузера. Пример: 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; } ... }
Ссылка
“
Значение аргумента запроса echo -n '2147483647/s/link127.0.0.1 secret' | \ openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d =
Задаёт секретное Полный URI запрашиваемой ссылки выглядит так: /
где
Если запрашиваемая ссылка проходит проверку на аутентичность,
значением переменной Пример: location /p/ { secure_link_secret secret; if ($secure_link = "") { return 403; } rewrite ^ /secure/$secure_link; } location /secure/ { internal; }
По запросу “ Значение хэша для данного примера на UNIX можно получить так: echo -n 'linksecret' | openssl md5 -hex
Встроенные переменные
|