регенерирующий идентификатор сеанса

Я думаю использовать этот код на каждой странице, чтобы уменьшить вероятность захвата сеанса. Обновляя 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, когда пользователь выходит из моих приложений.