|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Pavel V. Ammosov 2:5020/52 15 May 2001 00:35:39 To : All Subject : Re: session_id --------------------------------------------------------------------------------
> - Hi, Alex!
>
>On Sat, 12 May 01 19:16:03 +0500 Alex Shevchuk wrote:
>
> AS> Hе-а, не пойдет. А если повторится? А мне нужен уникальный
> AS> идентификатор, который не будет повторяться, к примеру, хотя бы
> AS> неделю. Смотри в одном из моих предыдущих писем, для чего мне
> AS> нужен этот id...
>
>у апачей 1.3.x есть для этого модуль mod_unique_id. этот id
>выставляется в переменной окружения UNIQUE_ID и является уникальным для
>каждого запроса. правда, делается он из тех же IP, PID и timestamp
>и в принципе может быть predictable.
Он представляет из себя 112 байтную строку, закодированную, аналогично
MIME кодировке BASE64, но с заменой +/ на @-, чтоб избежать необходимости
кодирования при передаче в url.
Сама строка состоит из: (32 bit timestamp, 32 bit IP адрес сервера, 32 bit PID
сервера, 16 бит счетчика), вот подпрограмма декодирования:
sub decode_uniq_id($) {
my $uid = shift;
$uid =~ y/@/+/;
$uid =~ y/-/\//;
my $decoded = decode_base64($uid);
my $timestamp = unpack("N", substr($decoded, 0, 4));
my $ip_addr = join(".", unpack("C4", substr($decoded, 4, 4)));
my $pid = unpack("N", substr($decoded, 8, 4));
my $cntr = unpack("n", substr($decoded, 12, 2));
return ($timestamp, $ip_addr, $pid, $cntr);
}
То есть, все вполне предсказуемо -- IP известен, время известно,
процессов apache будет врятли очень много, а если трафик небольшой,
то и счетчик будет предсказуем.
--
Pavel Ammosov O \
apavel@aha.ru __ )
http://isabase.philol.msu.ru/~apavel/ )
wget -O - isabase.philol.msu.ru/~apavel/key.asc|pgp -fka O /
--- slrn/0.9.6.3 (Linux)
* Origin: Zenon N.S.P. news server (2:5020/52.0)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/82044b0180912.html, оценка из 5, голосов 10
|