Как работают сессии PHP, когда куки отключены? - PullRequest
18 голосов
/ 05 марта 2009

Я пытался исследовать этот механизм, но нашел только подсказки, и они не очень последовательны. Как _id сеанса отправляется в браузер и как браузер получает указание вернуть его, когда пользователь запрашивает новую страницу?

Спасибо, Крис

Ответы [ 3 ]

28 голосов
/ 05 марта 2009

PHP сделает 2 вещи:

  • Он перепишет все ссылки для передачи дополнительного параметра GET, обычно PHPSESSID, но это можно изменить, установив session.name в php.ini
  • Будет добавлен скрытый ввод с тем же именем после всех <form> открывающих тегов.

Обратите внимание, что это опасная вещь, потому что любой, кто вам, например. скопируйте / вставьте URL-адрес, содержащий параметр PHPSESSID, чтобы поделиться вашим сеансом входа в систему на сайте - веб-сервер не может легко сказать, что вы отличаетесь от человека, которому вы отправили ссылку на ...

0 голосов
/ 30 ноября 2012

Сеансы работают путем создания уникального идентификатора (UID) для каждого посетителя и хранения переменных на основе этого UID. UID либо (1) сохраняется в файле cookie, либо (2) распространяется в URL.

0 голосов
/ 05 марта 2009

Собственный модуль сессии PHP поддерживает выбор идентификатора сессии из данных GET и POST (кроме файлов cookie). Вы можете использовать http://uk.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid и http://uk.php.net/manual/en/session.configuration.php#ini.url-rewriter.tags, чтобы позволить php обрабатывать пересылку идентификатора. Но в любом случае имейте в виду, что, особенно если вы используете GET для передачи идентификатора, более вероятно, что некоторые из ваших пользователей случайно отдают свой (действительный) идентификатор сеанса.

Базовому механизму все равно как идентификатор сеанса был перенесен с клиента на сервер. Пока вы передаёте «правильное» значение в session_id (), оно будет работать - даже если вы сделаете что-то настолько странное (глупое?), Как злоупотребление заголовком etag в качестве средства для идентификатора сеанса;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...