2013-05-02 3 views
0

Рассматривая OWASP Session Management Cheat Sheet, каждый раз, когда сессия заканчивается, пользователь должен пройти через те же самые шаги Pre-Auth --> Auth --> ..., чтобы сделать новый сеанс?Понимание срока действия сеанса

Например, если сеанс истекает, и веб-приложение требует аутентификации, пользователь должен будет вернуться в веб-приложение до получения нового сеанса?

+0

зависит, вы можете реализовать запомнить меня функцию с печеньем. – mpm

+0

С функцией 'запомнить меня', как это влияет на истечение и обновление сеанса? –

+1

@ Kevin хорошо, у вас будет два куки, которые хранят уникальный 'id'. 'id' для сеанса ссылается на данные сеанса. ссылки «запомнить меня» на «userid», которые вошли в систему. Идентификаторы сеанса обычно становятся недействительными после определенного времени бездействия (например, 30 минут). информация «запомнить меня» и «id» будет, например, действительны в течение 3 месяцев. если сеанс 'id' не существует, а действительный' Remember me' 'id, тогда будет создан сеанс. но вам нужно проявлять особую осторожность, если вы используете функциональность «помнить меня» (если реализовано неверно, у вас будет большая проблема с безопасностью) –

ответ

1

Сеансы хранятся в печенье.

Http - это протокол без гражданства. Каждый запрос на сервер работает изолированно. В запросе нет информации о предыдущем запросе.

Скажите, что пользователь с именем A входит на сайт. Этот сайт работает с сеансом и устанавливает данные сеанса для пользователя. Внутренне сервер создает некоторое значение и связывает его с конкретным пользователем. Значение 12345 вычисляется и ассоциируется с пользователем A. Сервер решает присвоить этому значению значение sessionId. Он отправляет sessionId в файл cookie, и этот файл cookie будет храниться в браузере пользователя. В следующий раз, когда пользователь A сделает запрос, этот куки-файл будет отправлен на сервер. Сервер читает файл cookie sessionId и находит его. Затем он видит, с каким пользователем является значение в этом cookie i.e 12345. Он обнаруживает, что это значение связано с пользователем A и поэтому его пользователь A, который делает запрос.

Скажите, что этот файл cookie истекает, может быть по разным причинам. Любой пользователь удаляет файл cookie на своем конце. Или через определенные дни сервер очищает эту связь между пользователем и сеансом. В этом случае сервер не сможет узнать, кто является пользователем, выполняющим запрос. И, следовательно, весь поток логина пользователем, генерация генерации должна будет иметь место.

Так что, да, если сессия истекает, и веб-приложение требует аутентификации, пользователь должен войти в систему снова

+0

Чтобы добавить к этому, сеансы * обычно * хранятся в файлах cookie, но также возможно использование перезаписи URL, где идентификатор сеанса привязан ко всем ссылкам контейнера. Тем не менее, он не используется. – ilikeorangutans

1

Да, пользователю необходимо войти в систему. Кроме того, важно, чтобы новый сеанс получил новый идентификатор сеанса, так как злоумышленник мог получить идентификатор сеанса. Если вы повторно аутентифицируете один и тот же идентификатор сеанса, злоумышленник также получит доступ. См. session fixation attack.

В зависимости от требований безопасности, вы также можете реализовать максимальное время жизни для каждой сессии. Обычно атакующий захватывает сеанс и пытается сохранить его как можно дольше. Истечение сеанса через определенное время, даже если оно активно, является эффективным способом обеспечения доступа злоумышленников только ограниченного времени.

Смежные вопросы