Я думаю использовать этот код на каждой странице, чтобы уменьшить вероятность захвата сеанса. Обновляя session_id по каждому запросу
if(!empty($_session)){ session_start(); }
Другим способом добиться этого было бы сделать это:
if(!empty($_session)){ session_regenerate_id(true); }
Однако я слышал критические замечания по поводу этой функции, которые говорят, что если страница по какой-либо причине слишком быстро обновляется, идентификатор сеанса становится недействительным.
Другой способ использования идентификатора сеанса – иметь больше контроля над тем, как создается сеанс.
Есть и другие способы добиться этого. Какая практика?
Вместо генерации идентификаторов сеансов, почему бы вам не зашифровать и использовать уже сгенерированный файл. Его можно использовать и уничтожать, когда намеченное действие завершено.
Вызов session_regenerate_id
на каждой странице – это ненужные накладные расходы.
Вы должны звонить только в момент входа в систему или в любое время, когда вы повторно авторизуете пользователя.
Если вы хотите дополнительно, вы можете сохранить последнее время восстановления в сеансе, а затем вызвать session_regenerate_id
после 30 минут, но, безусловно, нет необходимости в том, чтобы это было сделано на каждой странице.
У меня были проблемы действительно (на странице обновления или внутри ajax-запросов), используя session_regenerate_id(true);
по каждому запросу.
Но не с session_regenerate_id();
Итак, согласно
Обновите идентификатор сеанса после изменения уровня привилегий https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Renew_the_Session_ID_After_Any_Privilege_Level_Change
Регенерировать SID по каждому запросу http://en.wikipedia.org/wiki/Session_fixation#Regenerate_SID_on_each_request
я использую
session_regenerate_id();
по каждому запросу session_regenerate_id(true);
при входе в систему, выходе из системы и т. д. (любое изменение уровня привилегий) Лучшей практикой является использование SSL (и применение обычных средств защиты от других векторов безопасности, таких как XSS и SQL-инъекция). Исида для велоспорта – это просто попрошайничество в условиях гонки.
Однако я слышал критические замечания по поводу этой функции, которые говорят, что если страница по какой-либо причине слишком быстро обновляется, идентификатор сеанса становится недействительным.
Ну, я думаю, вы должны попробовать это, чтобы подтвердить это, но я не думаю, что вы когда-нибудь столкнетесь с этой проблемой.
В любом случае, восстановление сеанса для каждой pageload не полностью защищает вас от захвата сеанса и использует ресурсы, которые лучше всего проводят где-то в другом месте. Лучшее место для начала – это поиск SSL. Шифрование данных между клиентом и веб-сервером более безопасно.
Я лично восстанавливаю только идентификатор сеанса, когда пользователь входит в систему AND, когда пользователь выходит из моих приложений.