Mercurial > hg > nginx-site
comparison xml/ru/docs/http/ngx_http_secure_link_module.xml @ 830:42750c1b8d1b
Secure_link: documented newer operation mode.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 04 Feb 2013 18:13:55 +0400 |
parents | 764fbac1b8b4 |
children | 07402a11fd8d |
comparison
equal
deleted
inserted
replaced
829:eb4f221921fa | 830:42750c1b8d1b |
---|---|
8 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> | 8 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> |
9 | 9 |
10 <module name="Модуль ngx_http_secure_link_module" | 10 <module name="Модуль ngx_http_secure_link_module" |
11 link="/ru/docs/http/ngx_http_secure_link_module.html" | 11 link="/ru/docs/http/ngx_http_secure_link_module.html" |
12 lang="ru" | 12 lang="ru" |
13 rev="1"> | 13 rev="2"> |
14 | 14 |
15 <section id="summary"> | 15 <section id="summary"> |
16 | 16 |
17 <para> | 17 <para> |
18 Модуль <literal>ngx_http_secure_link_module</literal> (0.7.18+) проверяет | 18 Модуль <literal>ngx_http_secure_link_module</literal> (0.7.18) |
19 правильность запрашиваемой ссылки. | 19 позволяет проверять аутентичность запрашиваемых ссылок, |
20 защищать ресурсы от несанкционированного доступа, | |
21 а также ограничивать срок действия ссылок. | |
22 </para> | |
23 | |
24 <para> | |
25 Правильность запрашиваемой ссылки проверяется сравнением переданного | |
26 в запросе значения контрольной суммы со значением, | |
27 вычисляемым для запроса. | |
28 Если ссылка имеет ограниченный срок действия и он истёк, | |
29 ссылка считается устаревшей. | |
30 Результат этих проверок делается доступным в переменной | |
31 <var>$secure_link</var>. | |
32 </para> | |
33 | |
34 <para> | |
35 Модуль реализует два альтернативных режима работы. | |
36 В первом режиме, который включается директивой | |
37 <link id="secure_link_secret"/>, можно проверить аутентичность | |
38 запрашиваемых ссылок и защитить их от несанкционированного доступа. | |
39 Второй режим (0.8.50) включается директивами | |
40 <link id="secure_link"/> и <link id="secure_link_md5"/>, | |
41 и позволяет также ограничить срок действия ссылок. | |
20 </para> | 42 </para> |
21 | 43 |
22 <para> | 44 <para> |
23 По умолчанию этот модуль не собирается, его сборку необходимо | 45 По умолчанию этот модуль не собирается, его сборку необходимо |
24 разрешить с помощью конфигурационного параметра | 46 разрешить с помощью конфигурационного параметра |
26 </para> | 48 </para> |
27 | 49 |
28 </section> | 50 </section> |
29 | 51 |
30 | 52 |
31 <section id="example" name="Пример конфигурации"> | 53 <section id="directives" name="Директивы"> |
32 | 54 |
33 <para> | 55 <directive name="secure_link"> |
34 <example> | 56 <syntax><value>выражение</value></syntax> |
35 location /p/ { | 57 <default/> |
36 secure_link_secret some_secret_word; | 58 <context>http</context> |
59 <context>server</context> | |
60 <context>location</context> | |
61 | |
62 <para> | |
63 Задаёт строку с переменными, из которой будет выделено значение | |
64 контрольной суммы и время действия ссылки. | |
65 </para> | |
66 | |
67 <para> | |
68 Используемые в выражении переменные обычно связаны с запросом; | |
69 см. <link id="secure_link_md5">пример</link> ниже. | |
70 </para> | |
71 | |
72 <para> | |
73 Выделенное из строки значение контрольной суммы сравнивается со | |
74 значением MD5-хэша, вычисляемым для выражения, заданного | |
75 директивой <link id="secure_link_md5"/>. | |
76 Если контрольные суммы не совпадают, значением переменной | |
77 <var>$secure_link</var> становится пустая строка. | |
78 Если контрольные суммы совпадают, проверяется время действия ссылки. | |
79 Если срок действия ссылки задан и истёк, переменная | |
80 <var>$secure_link</var> получает значение “<literal>0</literal>”. | |
81 В противном случае она получает значение “<literal>1</literal>”. | |
82 Значение MD5-хэш передаётся в запросе закодированным в | |
83 <link url="http://tools.ietf.org/html/rfc4648#section-5">base64url</link>. | |
84 </para> | |
85 | |
86 <para> | |
87 Если ссылка имеет ограниченный срок действия, время её действия | |
88 задаётся в секундах с начала эпохи (1 января 1970 года 00:00:00 GMT). | |
89 Значение указывается в выражении после MD5-хэша | |
90 и отделяется от него запятой. | |
91 Время действия ссылки, переданное в запросе, делается доступным | |
92 в переменной <var>$secure_link_expires</var> для использования | |
93 в директиве <link id="secure_link_md5"/>. | |
94 Если время действия ссылки не задано, ссылка имеет неограниченный | |
95 срок действия. | |
96 </para> | |
97 | |
98 </directive> | |
99 | |
100 | |
101 <directive name="secure_link_md5"> | |
102 <syntax><value>выражение</value></syntax> | |
103 <default/> | |
104 <context>http</context> | |
105 <context>server</context> | |
106 <context>location</context> | |
107 | |
108 <para> | |
109 Задаёт выражение, для которого считается значение MD5-хэш, | |
110 сравниваемое с переданным в запросе. | |
111 </para> | |
112 | |
113 <para> | |
114 Выражение должно содержать защищаемую часть ссылки (ресурс) | |
115 и секретную составляющую. | |
116 Если ссылка имеет ограниченный срок действия, | |
117 выражение также должно содержать <var>$secure_link_expires</var>. | |
118 </para> | |
119 | |
120 <para> | |
121 Для предотвращения несанкционированного доступа выражение | |
122 может содержать информацию о клиенте, например, его адрес и | |
123 версию браузера. | |
124 </para> | |
125 | |
126 <para> | |
127 Пример: | |
128 <example> | |
129 location /s/ { | |
130 secure_link $arg_md5,$arg_expires; | |
131 secure_link_md5 "$secure_link_expires$uri$remote_addr secret"; | |
37 | 132 |
38 if ($secure_link = "") { | 133 if ($secure_link = "") { |
39 return 403; | 134 return 403; |
40 } | 135 } |
136 | |
137 if ($secure_link = "0") { | |
138 return 410; | |
139 } | |
140 | |
141 ... | |
41 } | 142 } |
42 </example> | 143 </example> |
43 </para> | 144 Ссылка |
44 | 145 “<literal>/s/link?md5=_e4Nc3iduzkWRm01TBBNYw&expires=2147483647</literal>” |
45 </section> | 146 ограничивает доступ к “<literal>/s/link</literal>” для клиента с IP-адресом |
46 | 147 127.0.0.1. |
47 | 148 Ссылка также имеет ограниченный срок действия до 19 января 2038 года (GMT). |
48 <section id="directives" name="Директивы"> | 149 </para> |
150 | |
151 <para> | |
152 Значение аргумента запроса <value>md5</value> на UNIX можно получить так: | |
153 <example> | |
154 echo -n '2147483647/s/link127.0.0.1 secret' | \ | |
155 openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d = | |
156 </example> | |
157 </para> | |
158 | |
159 </directive> | |
160 | |
49 | 161 |
50 <directive name="secure_link_secret"> | 162 <directive name="secure_link_secret"> |
51 <syntax><value>слово</value></syntax> | 163 <syntax><value>слово</value></syntax> |
52 <default/> | 164 <default/> |
53 <context>location</context> | 165 <context>location</context> |
54 | 166 |
55 <para> | 167 <para> |
56 Задаёт секретное <value>слово</value> для проверки правильности ссылки. | 168 Задаёт секретное <value>слово</value> для проверки аутентичности |
57 Полный URL защищённой ссылки выглядит так: | 169 запрашиваемых ссылок. |
58 <example> | 170 </para> |
59 /prefix/<value>hash</value>/<value>ссылка</value> | 171 |
60 </example> | 172 <para> |
61 где <value>hash</value> считается как | 173 Полный URI запрашиваемой ссылки выглядит так: |
62 <example> | 174 <example> |
63 md5(ссылка, секретное_слово); | 175 /<value>префикс</value>/<value>хэш</value>/<value>ссылка</value> |
64 </example> | 176 </example> |
65 </para> | 177 где <value>хэш</value> — MD5-хэш в шестнадцатеричном виде, |
66 | 178 вычисленный для конкатенации ссылки и секретного слова, |
67 <para> | 179 а <value>префикс</value> — произвольная строка без слэшей. |
68 Префикс — произвольная строка, не включающая слэш. | 180 </para> |
181 | |
182 <para> | |
183 Если запрашиваемая ссылка проходит проверку на аутентичность, | |
184 значением переменной <var>$secure_link</var> становится ссылка, | |
185 выделенная из URI запроса. | |
186 В противном случае значением переменной <var>$secure_link</var> | |
187 становится пустая строка. | |
188 </para> | |
189 | |
190 <para> | |
191 Пример: | |
192 <example> | |
193 location /p/ { | |
194 secure_link_secret secret; | |
195 | |
196 if ($secure_link = "") { | |
197 return 403; | |
198 } | |
199 | |
200 rewrite ^ /secure/$secure_link; | |
201 } | |
202 | |
203 location /secure/ { | |
204 internal; | |
205 } | |
206 </example> | |
207 По запросу “<literal>/p/5e814704a28d9bc1914ff19fa0c4a00a/link</literal>” | |
208 будет выполнено внутреннее перенаправление на | |
209 “<literal>/secure/link</literal>”. | |
210 </para> | |
211 | |
212 <para> | |
213 Значение хэша для данного примера на UNIX можно получить так: | |
214 <example> | |
215 echo -n 'linksecret' | openssl md5 -hex | |
216 </example> | |
69 </para> | 217 </para> |
70 | 218 |
71 </directive> | 219 </directive> |
72 | 220 |
73 </section> | 221 </section> |
74 | 222 |
75 | 223 |
76 <section id="variables" name="Встроенные переменные"> | 224 <section id="variables" name="Встроенные переменные"> |
77 | 225 |
78 <para> | 226 <para> |
79 <list type="tag"> | 227 <list type="tag" compact="no"> |
80 | 228 |
81 <tag-name><var>$secure_link</var></tag-name> | 229 <tag-name><var>$secure_link</var></tag-name> |
82 <tag-desc> | 230 <tag-desc> |
83 равна ссылке, выделенной из полного URL’а. | 231 Результат проверки ссылки. |
84 Если хэш неверный, то переменная равна пустой строке. | 232 Конкретное значение зависит от выбранного режима работы. |
85 </tag-desc> | 233 </tag-desc> |
86 | 234 |
235 <tag-name><var>$secure_link_expires</var></tag-name> | |
236 <tag-desc> | |
237 Время действия ссылки, переданное в запросе. | |
238 Предназначено исключительно для использования в директиве | |
239 <link id="secure_link_md5"/>. | |
240 </tag-desc> | |
241 | |
87 </list> | 242 </list> |
88 </para> | 243 </para> |
89 | 244 |
90 </section> | 245 </section> |
91 | 246 |