Вероломство
Это весь вопрос.
don.bidon
то есть доку по сессиям невмоготу прочитать?
MouseZver
Майнит
https://stackoverflow.com/questions/18937651/php-session-ids-how-are-they-generated
— Добавлено —
https://github.com/php/php-src/blob…3e7120d0503f327398/ext/session/session.c#L284
Вероломство
@MouseZver ты не так понял: мне надо не как создаётся SID, а как пользователю он предоставляется при помощи session_id() откуда функция берёт это значение, чтобы я его увидел?
Откуда она его вымайнивает?
PHP:
С сервака или из кукисов?
— Добавлено —
@MouseZver давай сразу расширю вопрос: будет ли SID, присланный методом подмены в куки через курл, соответствовать session_id() той страницы, где расположена session_start()? О какТо есть изменится ли session_id() на тот, который прислан от балды?
mkramer
С куки, конечно. Чтобы курлом имитировтаь браузер, надо сохранять куки ответов и пересылать обратно. Если прислать другой session_id, как ты выражаешься, от балды, php не найдёт соответствующий файл сессии (сессии по дефолту хранятся в файлах)
Вероломство
@mkramer мне не надо ничего имитировать, мне нужно знать, если мне курлом прислали подменённые куки с каким-то SID, то какой SID будет в session_id() на странице с session_start()?
Я хочу проверить: совпадает ли присланная хрень с session_id().
Если подменили куки и session_id() берёт SID из куки, то ясен пень хрень совпадёт сама с собой.
Но сессии хранятся же на серваке и там SID, созданный session_start() не совпадёт с присланной в куках хренью, то есть мне в куки прислали — МАМА, session_start() для curl_exec создал на серваке сессию — ПАПА, я сравниваю то что прислали с session_id() (в ней по логике SID с сервака — ПАПА) — ОНИ СОВПАДУТ?
PHP:
Я ПРАВИЛЬНО РАССУЖДАЮ?
Drunkenmunky
С сервака.
Который извлекает его из кукиз, а если их нет, то ищет в GET.
Если и там не находит, то генерирует новый. То есть помещает в SID.
Который, если у клиента отключены куки, присоединяет ко всем локальным URL, а если включены, то записывает в кукиз при session_start()
Вероломство
@Drunkenmunky файл сессии получает имя из куки и потом создаётся? Или сначала на сервере создаётся файл сессии и в куку помещается SID?
вот так мне будет понятнее, а то Вы как-то все наполовину отвечаете, я не могу так сообразить, сори
Drunkenmunky
В куки(или GET) находится пара ключ=значение(имя сессии=её ID)
Если имя сессии совпадает с установками php.ini или session_name(‘name’), то ищется файл сессии со значением SID, если его нет, то создается(имя и ID должно соответствовать 0-9a-zA-Z, и что-то ещё вроде).
И вот из него уже извлекаются данные $_SESSION
Если они там есть.
mkramer
Смотри, алгоритм примерно такой у session_start()
- Проверяется, есть ли кука с айди сессии. Если нету — создаётся новая сессия, и конец. Если есть, идём дальше.
- По этому айди на серваке ищется файл. Если он есть, то подключается сессия с присланным айди, а данные из этого файла десериализуются в массив $_SESSION
- Если файла нету, значит присланная кука недействительная, и создаётся новая сессия, с новым айди, который будет передан клиенту с кукой
Вероломство
@mkramer вот и всё что мне надо было, а то мне тут впаривали, что можно передать курлом в куки левый SID и он совпадёт с session_id(), который создан session_start()
всё понятно: этого сделать нельзя, только если случайно угадать