Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ngx_http_userid_module - неточност и документации, cookie пред сказуем
On Fri, Jan 20, 2012 at 03:29:16PM +0200, Volodymyr Kostyrko wrote:
>
> Anton Yuzhaninov wrote:
> > On 01/20/12 16:29, Volodymyr Kostyrko wrote:
> >> <<< HTTP/1.1 200 OK <<< Server: nginx/1.0.11 <<< Date: Fri, 20 Jan
> >> 2012 11:04:19 GMT <<< Content-Type: application/json <<<
> >> Connection: close <<< Set-Cookie: uid=wKgIPE8ZSjOvoyMQAwNlAg==;
> >> expires=Sat, 19-Jan-13 11:04:19 GMT; path=/ <<< P3P:
> >> policyref="/w3c/p3p.xml", CP="NOI CUR ADM PSA OUR STP STA" <<<
> >> offset 0, length -1, size -1, clength -1 Unknown
> >>
> >> Т.е. зная во сколько пользователь подключался к сайту можно
> >> приблизительно угадать какая у него будет создана сессия. Ну и
> >> соответственно в неё вклиниться. Можно вообще мониторить сайт на
> >> предмет авторизированных пользователей.
> >
> > модуль userid создавался совсем не для сессий, и uid использовать как
> > session id плохая идея.
> >
> > В любом случае в этом модуле нет механизма проверки сессий, так что
> > непонятно зачем вообще нужно использовать uid в качестве session id.
>
> Ладно, тут я прогнал насчёт сессий. Но факт в том что куки могут
> свободно повторяться, а это уже совсем не похоже на поведение mod_uid.
> Вот например из доки на mod_uid от апача:
>
> ====
> Почему не mod_usertrack из поставки Apache
>
> Потому что у него есть несколько недостатков:
> нет гарантий, что двум пользователям не будет выдана одинаковая cookie,
> хотя конечно включение getpid(), remote_ip и времени до миллисекунд
> сводит эту вероятность к минимуму
> нет поддержки многосерверной работы - а в этом случае возможность выдачи
> одинаковой cookie возрастает
> в логе хочется иметь возможность видеть и выданную пользователю cookie,
> причем видеть ее отдельно, mod_usertrack их перемешивает.
> Хочется иметь "номер сервиса" (см. выше) - чтобы понимать на какой из
> наших сервисов пользователь зашел при первом своем визите.
> ====
>
> Может лучше добавить в документацию хотя-бы короткое описание поведения
> модуля чтобы его не путали по функционалу с mod_uid. Вроде:
>
> ====
> Модуль ngx_http_userid_module выдаёт сookies для идентификации клиентов.
> Для записи в лог можно использовать переменные $uid_got и $uid_set.
> Модуль совместим с модулем mod_uid для Apache, хотя в отличии от mod_uid
> нет гарантии что двум пользователям не будет выдана одинаковая cookie и
> нет поддержки многосерверной работы - а в этом случае возможность выдачи
> одинаковой cookie возрастает.
> ====
ngx_http_userid_module формирует куку так же, как mod_uid (за исключением
баги c network order в ngx_http_userid_module) плюс к номеру процесса
добавляются младшие биты микросекунд во время старта процесса.
--
Igor Sysoev
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|