Где поместить session_regenerate_id() в сценарий входа в PHP
Я создаю сценарий входа в систему, и мне нужно знать, куда именно я должен поместить функцию session_regenerate_id(), когда я хочу войти в систему пользователя. Как я это делаю, так:
$user_id = $general->login($username, $password);
$_SESSION['user_id'] = $user_id;
Функция входа в систему возвращает автоинкрементный идентификатор пользователя в таблице, и я сохраняю его в переменной $_SESSION, как показано выше. Я показал только ту часть логики, в которой я использую переменную Session, потому что я просто знаю, куда мне следует поместить session_regenerate_id, чтобы избежать атаки фиксации сеанса. До или после того, как я назначу значение?
Вот так:
session_regenerate_id(true);
$_SESSION['user_id'] = $user_id;
Или после, вот так:
$_SESSION['user_id'] = $user_id;
session_regenerate_id(true);
Спасибо.
1 ответ
Это не имеет значения, если вы делаете это в том же запросе, что и сохранение идентификатора пользователя в сеансе (применяются стандартные ограничения, например, если вы не кэшируете свои выходные данные, вам не разрешено печатать любые символы перед выполнением session_regenerate_id), В любом случае, как вы это называете, другие пользователи не смогут использовать старый идентификатор сеанса для доступа к сеансу, в котором хранится user_id.
session_regenerate_id() необходимо вызвать до установки информации аутентификации в $_SESSION.
Итак, вы должны поместить его перед $_SESSION.