• XSS.stack #1 – первый литературный журнал от юзеров форума

Баг в php всех версий, работа с сессиями.

Одинокий Волк

CPU register
Забанен
Регистрация
16.05.2005
Сообщения
1 264
Решения
1
Реакции
3
Пожалуйста, обратите внимание, что пользователь заблокирован
С мембером форума nulled, terkin общались, по кодингу, как лучше реализовать ему там один проект.
Посоветовал я ему сделать хранение данных не в файлах, а в сессии - это ведь по сути те же файлы, они так же лежат на сервере и получить данные из них нельзя, чем не альтернатива хранения данных без писанины во временный файл.
А писать ему надо было статус выполнения скрипта в фоновом режиме.
Примеры скрипта которые я в процессе тестов накидал доступны в архиве.

Так вот баг заключается в следующем.
Когда начинаем выполнять скрипт в фоновом режиме мы ему передаём сессию через аякс запрос ранее полученую на пользовательском интерфейсе, начинаем работать с этой сессией что-то там делать каждый 3 секунды к примеру и писать статус в сессию $_SESSION['status'] = date('s')... я писал время и счётчик.
Второй аякс запрос должен получать статус из этой самой сессии, там всё просто так же передаём номер сессии и выводим $_SESSION['status']

Так же в процессе отладки добавил в скрит который работает фоново и в код вывода статуса что бы он эти данные писал в лог файл, какой типа запроса статус или фоновая работа, время и данные сессии.

И вот что интересно получаем в результате работы.
Фоновый скрипт получает сессию и начинает свою работу.
Мы посылаем в это время аякс запрос на статус, т.е. на просто вывод данных этой же сессии и как не удевительно скрипт не можно получить доступ к файлу сессии, а значит и выдать нам её, он просто подвисает и ждёт освобождения.

Как только фоновый скрипт выполняется. Все аякс запросы статуса получают ответы с последними данными которые записаны в $_SESSION['status'] вот так вот

Смотрим лог файл что пишеться в процессе работы:
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:40] start
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:43] work 1
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:46] work 2
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:49] work 3
[start] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[status] sname: PHPSESSID sid: d8200f6a532cd72987204088c3cfadec status: [00:26:52] end
[start] - это работа скрипта в фоновом режиме
[status] - это мои аякс запросы, которые были сделаны ВО ВРЕМЯ РАБОТЫ ФОНОВОГО СКРИПТА! Заметьте не после, как записалось в лог
Вот и весь баг.
 

Вложения

  • session.zip
    3.2 КБ · Просмотры: 196
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Ага уже увидел, щас попробую как пашет, статус там стоит bogus ;)))
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх