Как устроены сессии: идентификатор посетителя

Как уже отмечалось, ранее мы рассматривали принцип сессий. Стоит сказать, что необходимость в них возникла в виду того, что PHP лишен такой нормального свойства программы — хранить что-либо о пользователе. Однако, не стоит валить всю вину на PHP. Даже если вспомнить «древность», то такие языки как Perl или язык ASP будут работать по тем же самым принципам, причем и они так же не будут иметь возможности что-то сохранить о пользователе. Вся причина кроется в убогости Web’a. Теперь стоит вспомнить первую задачу программиста, а именно: писать программы, работающие в любой среде.

Давайте вспомним еще раз устройство сессий. Мы уже знаем, что PHP-процессор различает пользователей с помощью идентификатора ( является 128 битным числом). Допустим, человек пришел на сайт впервые и PHP-процессор это фиксирует, присваивая ему «свободное» число. Все последующие посещения этого пользователя будут ассоциироватся с его личным числом (идентификатором), из-за чего программе будет предоставлена персональная область памяти.

Самое основное заключается вот в чем: если суметь передать идентификатор от одной страницы до другой , то мы сможем различать всех посетителей. На этом работа с Web’ом заканчивается для программиста. И еще один весьма важный момент: дело в том, что подделать сессию или идентификатор нельзя. Согласитесь, как это сделать, если число из 128 битв десятичном представлении имеет 38 нулей. Если далее следовать законам математики, можно сказать, что даже при численности посетителей сайта в 10 000 человек, остается значение 2 в степени 114, согласитесь, что это так же нереально. Да и объяснить это можно достаточно просто: чтобы подобрать номер сессии, нужно сделать запрос к вашему веб-серверу. В этом случае допустим, каждый запрос занимает 1024 байта. Через миллиард обращений к вашему сайту, что составит 1000 ГБ трафика, явно что-то случиться:

* вариант первый — ваш сайт просто отключат из-за дикого трафика или у вас не хватит денег на оплату такого большого трафика.
* вариант второй – сделать этого вам не позволит пропускная способность провайдера или канал, которые слишком слабы чтобы в разумные сроки перебрать все номера
* вариант третий — ваш сервер просто переполниться лог файлами и файлами фиктивных сессий, перестанет работать
* всех хакеров привлекут к уголовной ответственности за целенаправленную и длительную атаку

Статьи по теме: