ngx_http_userid_module - неточности документации, cookie предсказуем
Volodymyr Kostyrko
c.kworr на gmail.com
Пт Янв 20 12:29:02 UTC 2012
Hi all.
В документации модуля отсутствует описание userid_mark:
синтаксис: userid_mark off | [a-z0-9=];
умолчание: off
контекст: http, server, location
Директива задаёт первый символ хвоста base64 представления куки. По
умолчанию хвост base64 - '=='. "userid_mark A" выдаёт куки,
оканчивающиеся на "A=". При этом он перевыдаёт все принятые куки,
у которых хвост не такой. Это можно использовать чтобы добавить или
поменять P3P или expires.
Второе. По идее userid должен уникально идентифицировать каждого
пользователя без возможности узнать а кто ещё сейчас чего. На самом деле
выдаваемые куки различаются буквально парой байтов.
[green] ~> fetch -vvvs http://test/
scheme: [http]
user: []
password: []
host: [test]
port: [0]
document: [/]
---> test:80
looking up test
connecting to test:80
requesting http://test/
>>> HEAD / HTTP/1.1
>>> Host: test
>>> User-Agent: fetch libfetch/2.0
>>> Connection: close
>>>
<<< HTTP/1.1 200 OK
<<< Server: nginx/1.0.11
<<< Date: Fri, 20 Jan 2012 11:04:18 GMT
<<< Content-Type: application/json
<<< Connection: close
<<< Set-Cookie: uid=wKgIPE8ZSjKvoyMQAwNkAg==; expires=Sat, 19-Jan-13
11:04:18 GMT; path=/
<<< P3P: policyref="/w3c/p3p.xml", CP="NOI CUR ADM PSA OUR STP STA"
<<<
offset 0, length -1, size -1, clength -1
Unknown
[green] ~> fetch -vvvs http://test/
scheme: [http]
user: []
password: []
host: [test]
port: [0]
document: [/]
---> test:80
looking up test
connecting to test:80
requesting http://test/
>>> HEAD / HTTP/1.1
>>> Host: test
>>> User-Agent: fetch libfetch/2.0
>>> Connection: close
>>>
<<< 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
Т.е. зная во сколько пользователь подключался к сайту можно
приблизительно угадать какая у него будет создана сессия. Ну и
соответственно в неё вклиниться. Можно вообще мониторить сайт на предмет
авторизированных пользователей.
--
Sphinx of black quartz judge my vow.
Подробная информация о списке рассылки nginx-ru