Подскажите, есть ли способы подделать массив $_SESSIONS? Интересует меня это по той причине, что я впервые использую сессии и хотел бы знать, какие уязвимости имеют сессии. К примеру, не рекомендуется при авторизации хранить в сессии пароль и логин пользователя, т.к. они могут сохраниться в доступных местах у пользователя. А насколько безопасно хранить в сессии метку, что пользователь успешно прошел авторизацию? Каков риск, что злоумышленник сможет подделать данную метку?
Бред. Что из себя представляет сессия? На сервере создается файл в указанном в настройками месте, который недоступен из-вне с рандомным именем. В этот файл пишется все то, что ты присваиваешь в $_SESSION. Также юзеру передается кука в виде названия этого файла. Только название, без его содержимого. Часто эта кука называется на "PHPSESSID" или что-то в этом роде. Она имеет срок жизни, пока открыт браузер. Значением этой куки есть название вот того самого файла на твоем сервере, в котором вся инфа, присвоенная в $_SESSION лежит. Браузер обращается к серверу, передает ему куку PHPSESSID с названием файла (например, чтото вроде dadadw32rf89sfs9fs89fs89fsfdf23fdf такого. Обычно 32 символа). Сервер смотрит и ищет такой файл. Если он есть в нужном месте - он читает его и заполняет массив $_SESSION. Если ты закрыл браузер - то при обращении к серверу - сервер тебе выдаст новый PHPSESSID и создаст новый файл, а старый удалит через некоторое время. Вся инфа, которую ты пишешь в $_SESSION - лежит на сервере. Но пихать пароль в сессию не то чтобы опасно, просто это не есть правильным. Это уже данные пользователя и они должны быть в бд где-то, которые получаются при необходимости. Добавлено спустя 1 минуту 36 секунд: Если не создано никаких прибомбасов, то при получении значения сессионной куки (вот того самого dadadw32rf89sfs9fs89fs89fsfdf23fdf ) - можно получить чужую сессию.
Вот пишут такой бред в различных источниках, поэтому и приходится переспрашивать - ну это уже зависит от клиента. Тут, как ни крути, клиент - уязвимое место... А в остальном значит, что сессия - место надежное.
есть нюанс, как обычно ))) если пользуешся shared hosting, т.е. то, что русские обычно называют просто "хостинг", то на одном физическом сервере гнездятся N сайтов разных клиентов и папка для временных файлов и для сессий у них может быть одна. и нередко админы не озабачиваются никакой дополнительной защитой. поэтому можно сказать, что без "дополнительных прибамбасов" есть возможность эти приватные данные просрать.
никто и не говорит, что спасенья нет ))) просто 99.9999% пэхапэшников о таких вещах не подозревают Добавлено спустя 2 минуты 51 секунду: на нормальных хостингах, кстати, виртуальный сервер клиента работает под своим аккаунтом и права на sess_* есть только у владельца. только не все хостинги нормальные.