V3.3.4 Session Termination
Requirement:
Verify that users are able to view and (having re-entered login credentials) log out of any or all currently active sessions and devices.
Explanation:#
Решение о разработке веб-приложения заключается в том, чтобы определить, разрешено ли несколько одновременных входов в систему от одного и того же пользователя с одного и того же или с разных клиентских IP-адресов. Если веб-приложение не хочет разрешать одновременный вход в сеанс, оно должно предпринимать эффективные действия после каждого нового события аутентификации, неявно завершая ранее доступный сеанс или запрашивая пользователя (через старый, новый или оба сеанса) о сеансе, который должен оставаться активным.
Для веб-приложений рекомендуется добавлять пользовательские возможности, которые позволяют проверять сведения об активных сеансах в любое время, отслеживать и предупреждать пользователя об одновременных входах в систему, предоставлять пользовательские функции для удаленного завершения сеансов вручную и отслеживать историю активности учетной записи (журнал) путем записи несколько сведений о клиенте, таких как IP-адрес, пользовательский агент, дата и время входа в систему, время простоя и т. д.
Remediation:#
Чтобы пользователи могли просматривать текущие активные сеансы и устройства и выходить из них, можно реализовать следующее исправление:
- Отслеживайте все активные сеансы пользователя. Эта информация может храниться в базе данных или в памяти, в зависимости от ваших требований.
- Предоставьте пользователю страницу для просмотра всех его активных сеансов и устройств. На этой странице должна отображаться такая информация, как IP-адрес, пользовательский агент и время последней активности для каждого сеанса.
- Чтобы выйти из сеанса или устройства, пользователю необходимо повторно ввести свои учетные данные для входа. После успешной повторной аутентификации сеанс или устройство могут быть признаны недействительными.
Вот пример реализации на PHP:
В этом примере, когда пользователь запрашивает выход из сеанса, он должен пройти повторную аутентификацию, введя свой пароль. Если пароль правильный, сеанс становится недействительным, и пользователь перенаправляется на страницу сеансов. На странице сеансов отображаются все активные сеансы пользователя, включая такую информацию, как пользовательский агент и время последней активности.
Additional:#
https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
https://code.tutsplus.com/tutorials/how-to-use-sessions-and-session-variables-in-php--cms-31839