За последние 24 часа нас посетили 16818 программистов и 1635 роботов. Сейчас ищут 923 программиста ...

Вопрос по сессиям

Тема в разделе "PHP для новичков", создана пользователем demoniqus, 22 май 2012.

  1. demoniqus

    demoniqus Активный пользователь

    С нами с:
    29 мар 2011
    Сообщения:
    34
    Симпатии:
    0
    Подскажите, есть ли способы подделать массив $_SESSIONS?
    Интересует меня это по той причине, что я впервые использую сессии и хотел бы знать, какие уязвимости имеют сессии. К примеру, не рекомендуется при авторизации хранить в сессии пароль и логин пользователя, т.к. они могут сохраниться в доступных местах у пользователя. А насколько безопасно хранить в сессии метку, что пользователь успешно прошел авторизацию? Каков риск, что злоумышленник сможет подделать данную метку?
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Бред.

    Что из себя представляет сессия? На сервере создается файл в указанном в настройками месте, который недоступен из-вне с рандомным именем. В этот файл пишется все то, что ты присваиваешь в $_SESSION.
    Также юзеру передается кука в виде названия этого файла. Только название, без его содержимого. Часто эта кука называется на "PHPSESSID" или что-то в этом роде. Она имеет срок жизни, пока открыт браузер. Значением этой куки есть название вот того самого файла на твоем сервере, в котором вся инфа, присвоенная в $_SESSION лежит. Браузер обращается к серверу, передает ему куку PHPSESSID с названием файла (например, чтото вроде dadadw32rf89sfs9fs89fs89fsfdf23fdf такого. Обычно 32 символа). Сервер смотрит и ищет такой файл. Если он есть в нужном месте - он читает его и заполняет массив $_SESSION.
    Если ты закрыл браузер - то при обращении к серверу - сервер тебе выдаст новый PHPSESSID и создаст новый файл, а старый удалит через некоторое время.
    Вся инфа, которую ты пишешь в $_SESSION - лежит на сервере.
    Но пихать пароль в сессию не то чтобы опасно, просто это не есть правильным. Это уже данные пользователя и они должны быть в бд где-то, которые получаются при необходимости.

    Добавлено спустя 1 минуту 36 секунд:
    Если не создано никаких прибомбасов, то при получении значения сессионной куки (вот того самого dadadw32rf89sfs9fs89fs89fsfdf23fdf ) - можно получить чужую сессию.
     
  3. demoniqus

    demoniqus Активный пользователь

    С нами с:
    29 мар 2011
    Сообщения:
    34
    Симпатии:
    0
    Вот пишут такой бред в различных источниках, поэтому и приходится переспрашивать
    - ну это уже зависит от клиента. Тут, как ни крути, клиент - уязвимое место...
    А в остальном значит, что сессия - место надежное.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    есть нюанс, как обычно )))
    если пользуешся shared hosting, т.е. то, что русские обычно называют просто "хостинг", то на одном физическом сервере гнездятся N сайтов разных клиентов и папка для временных файлов и для сессий у них может быть одна. и нередко админы не озабачиваются никакой дополнительной защитой. поэтому можно сказать, что без "дополнительных прибамбасов" есть возможность эти приватные данные просрать.
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    никто и не говорит, что спасенья нет ))) просто 99.9999% пэхапэшников о таких вещах не подозревают

    Добавлено спустя 2 минуты 51 секунду:
    на нормальных хостингах, кстати, виртуальный сервер клиента работает под своим аккаунтом и права на sess_* есть только у владельца.
    только не все хостинги нормальные.
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО