V3.3.2 Session Termination
Requirement:#
If authenticators permit users to remain logged in, verify that re-authentication occurs periodically both when actively used or after an idle period. (C6)
Explanation:#
Раскрытие, захват, предсказание, перебор или фиксация идентификатора сеанса приведет к атакам захвата сеанса (или бокового захвата), когда злоумышленник может полностью выдать себя за пользователя-жертву в веб-приложении. Злоумышленники могут выполнять два типа атак с перехватом сеанса: целевые или общие. При целенаправленной атаке цель злоумышленника — выдать себя за определенного (или привилегированного) пользователя-жертву веб-приложения. Для общих атак цель злоумышленника — выдать себя за любого действительного или законного пользователя в веб-приложении.
Remediation:#
Один из способов обеспечить периодическую повторную аутентификацию в приложении — установить тайм-аут для сеанса и проверить, не был ли пользователь неактивен в течение определенного времени. В этом случае пользователю потребуется повторно пройти аутентификацию, чтобы продолжить использование приложения.
Этот код запускает сеанс, устанавливает значение времени ожидания 3600 секунд (1 час) и проверяет, был ли пользователь неактивен в течение этого времени. Если это так, переменные сеанса сбрасываются, сеанс уничтожается, а пользователь перенаправляется на страницу входа. Если пользователь все еще активен, значение времени ожидания сеанса обновляется до текущего времени.
Additional:#
https://www.php.net/manual/ru/features.session.security.management.php
https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html