Является ли запуск session_start таким образом более безопасным? - PullRequest
2 голосов
/ 14 июля 2011

Мой друг начинает свою сессию таким образом.

<?php
session_start();
session_regenerate_id();
session_destroy();
unset($_SESSION);
session_start();
?>

Есть ли какие-либо преимущества в безопасности, против перехвата сессии и т. Д.

Просто интересно, почему, в отличие от обычного session_start ();

Ответы [ 3 ]

5 голосов
/ 14 июля 2011

Все, что вам нужно, это

session_start()
session_regenerate_id()

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

2 голосов
/ 14 июля 2011

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

Похоже, что ваш друг, возможно, пытался сделать это стереть любую предыдущую информацию СЕССИИ, а затем начать новую. Возможно, он проверяет какой-то квантификатор, и если он оценивает правильно, то включает это в страницу PHP? В любом случае, вызов функций Rocket работает лучше.

0 голосов
/ 14 июля 2011

Этот код удаляет сеанс, затем создает новый пустой при каждом его запуске.

session_destroy();
unset($_SESSION);

Это удалит все данные в вашем сеансе, тогда session_start сделает вас совершенно новым.

Вы можете запустить это в первый раз, чтобы создать новый сеанс, но если вы хотите, чтобы данные в сеансе загружались на других страницах, вам просто нужно session_start.

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