testcookie-nginx-module icon indicating copy to clipboard operation
testcookie-nginx-module copied to clipboard

Зацикленный редирект.

Open cherker opened this issue 7 years ago • 6 comments

Здравствуйте. Используем Ваш модуль, большое спасибо за него. Но возникает такая проблема: Без каких-либо причин, некоторые пользователи получают зацикленный редирект, бесконечно. Выглядит таким образом:

217.118.79.39 - - [19/Feb/2018:05:28:43 +0100] "GET / HTTP/1.1" 200 990 domain.ru "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_1 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C153 Safari/604.1" "-" 217.118.79.39 - - [19/Feb/2018:05:28:43 +0100] "GET /?test_42=1 HTTP/1.1" 301 178 domain.ru "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_1 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C153 Safari/604.1" "-" 217.118.79.39 - - [19/Feb/2018:05:28:43 +0100] "GET / HTTP/1.1" 200 990 domain.ru "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_1 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C153 Safari/604.1" "-" 217.118.79.39 - - [19/Feb/2018:05:28:44 +0100] "GET /?test_42=1 HTTP/1.1" 301 178 domain "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2_1 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C153 Safari/604.1" "-"

И так бесконечно. На стороне пользователя все проверено, все в порядке. На том же устройстве, если сменить IP - все в порядке. Если другому устройству раздать проблемный IP - проблема остается. Судя по всему привязано именно к IP.

Конфиг:

testcookie off; testcookie_name FOR; testcookie_secret secret; testcookie_session $remote_addr; testcookie_arg test_42; testcookie_max_attempts 2;

#setting fallback url
testcookie_fallback http://$host/cookies.html;

testcookie_get_only on;

testcookie_redirect_via_refresh on;
testcookie_refresh_encrypt_cookie on;
testcookie_refresh_encrypt_cookie_key random;
testcookie_refresh_encrypt_cookie_iv random2;
testcookie_refresh_template '<html><head><meta charset="utf-8"></head><noscript><center>Вам нужно включить поддержку <a href="https://yandex.ru/support/common/browsers-settings/browsers-java-js-settings.html">js</a> в браузере, чтобы посетить данный сайт.</center></noscript><body><script type=\"text/javascript\" src=\"/aes.min.js\" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("$testcookie_enc_key"),b=toNumbers("$testcookie_enc_iv"),c=toNumbers("$testcookie_enc_set");document.cookie="FOR="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";location.href="$testcookie_nexturl";</script></body></html>';

location = /aes.min.js {
    gzip on;
    gzip_min_length 1000;
    gzip_types text/plain;
    root /usr/share/nginx/html;
 }

location = /cookies.html {
    root /usr/share/nginx/html;

Прошу помощи, сами разобраться не можем уже неделю. CentOS Linux release 7.3.1611

cherker avatar Feb 19 '18 05:02 cherker

А сменить testcookie_secret пробовали? Я сейчас как раз изучаю поведение модуля в одном кейсе, там с некоторыми testcookie_secret все пользователи получают редирект loop из-за не правильно генерирующейся куки. Смена secret на любое другое значение помогает.

hroost avatar Feb 19 '18 13:02 hroost

SlowAES патчили?

kyprizel avatar Feb 19 '18 13:02 kyprizel

Сменили testcookie_secret Также еще раз пропатчили SlowAES

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

cherker avatar Feb 20 '18 09:02 cherker

Just remove: expires=Thu, 31-Dec-37 23:55:55 GMT;

duy13 avatar Feb 21 '18 03:02 duy13

У меня так же наблюдаются проблемы с определённым testcookie_secret. Пока закономерности найти не могу, но могу привести пример плохого и хорошего значения: testcookie_secret 63c76c6ae020c070b1646aac00caf3d4d4d51ef9ab8e1bb6851535cbf002356b; - плохое значение testcookie_secret 1ed17d9ec74ff3d08b37a1905bd808b9448457335fadc1c4801d980733632784; - хорошее значение UPD: Моё предположение, что в конце строки сочетание двух нулей является виновником постоянного редиректа. "002356b" если поменять на "012356b" или "102356b" то проблема устраняется. Однако первая пара нулей никак не влияет на это всё...

Maximbl4m avatar Oct 10 '20 16:10 Maximbl4m

Проверьте версию js скрипта.

kyprizel avatar Oct 11 '20 08:10 kyprizel