Можно ли использовать php session_reset для перезагрузки измененного сеанса?

В этот вопрос от security.SE была предложена схема межсайтового входа.

По сути, вся информация о пользователе сначала хранится на главном сервере приложений и не синхронизируется с каким-либо сервером CDN. Все серверы являются частными и обслуживаются только зарегистрированными пользователями.

Когда клиент делает медиа-запросы с сервера CDN, он также сначала делает запрос аутентификации, используя токен, полученный от сервера приложений - сервер CDN создает сеанс для клиента для всех запросов и ожидает исходящего сервера приложений. для положительного предиката токена аутентификации перед тем, как пометить сеанс как прошедший аутентификацию и ответить на медиа-запросы.

Теперь немного о реализации. Я хотел бы знать, можно ли использовать функцию PHP session_reset() для перезагрузки сеанса, измененного в другом запросе; и если может, как это работает?

Примечание 1

Данные сеанса хранятся в месте по умолчанию, как это настроено поставляемым php.ini. Это вероятность 9/10 в /var.

Пожалуйста, объясните суть того, что здесь требуется, чтобы ваш вопрос имел смысл сам по себе, не требуя, чтобы другой поток на другом сайте имел смысл.

deceze 27.10.2018 16:11

@deceze Я объяснил то, что хотел бы знать, первый абзац просто объясняет, почему я хочу это знать, и служит вики-ссылкой. Надеюсь, это может отложить вопрос.

DannyNiu 27.10.2018 16:18

Честно говоря, объяснение вашей схемы немного сложно понять, и внезапный переход от объяснения схемы аутентификации высокого уровня к мельчайшим деталям PHP оставляет у меня общее впечатление, что это может быть плохая, запутанная идея. Но это в основном внутреннее ощущение ...

deceze 28.10.2018 02:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

session_reset () просто отменит изменения, которые еще не были сохранены ...

чтобы даже использовать его, вам нужно будет раньше вызвать в session_write_close ().

вы, вероятно, могли бы искать session_set_cookie_params ().

и лучше изменить значения по мере необходимости - достаточно контролируемым образом.

Я понял первые два абзаца - данные сеанса должны быть session_write_close () 'd, прежде чем они могут быть session_reset ()' d другими. Я думаю, что, может быть, вы можете добавить аннотированный фрагмент кода, объясняющий пошагово, что будет происходить при каждом вызове? Я не совсем понимаю, зачем нам session_set_cookie_params (), так что можете добавить несколько примеров?

DannyNiu 28.10.2018 06:56

@DannyNiu session_set_cookie_params(), похоже, связан со мной ... потому что CDN имеет тенденцию иметь разные имена хостов - и поэтому это нужно как-то учитывать. вы даже не сказали, какой CDN, поэтому все это довольно теоретически (например, будет ли там поддерживаться аутентификация). также неясно хранилище сеансов ... если это таблица MEMORY на mySQL, она мгновенно изменится.

Martin Zeitler 28.10.2018 07:09

Аутентификация с CDN и с сервером приложений использует разные файлы cookie, их имена сеансов разные, поэтому я не рассматривал (насколько мне известно или даже знал) session_set_cookie_params (). Но спасибо, что подняли этот вопрос.

DannyNiu 28.10.2018 07:10

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

DannyNiu 28.10.2018 07:14

Другие вопросы по теме