Поскольку я работал над своими недавними проектами на рельсах, я часами сидел на стуле и уставал, поэтому я вышел на улицу, чтобы подышать свежим воздухом, и сделал несколько перерывов. Но через несколько часов я вернулся и попытался поработать над проектом, я заметил, что я все еще вошел в систему, и мой пользовательский сеанс все еще остается активным, хотя я ничего не делал в течение нескольких часов. поэтому мне было интересно, должен ли быть возможный способ установить какой-либо метод тайм-аута, когда пользователь НЕАКТИВЕН определенное количество раз.

Но почему? нам нужно, чтобы он вышел из системы? Самое главное - это вопрос безопасности. Что, если пользователь использует общедоступный компьютер, доступ к которому имеют все люди, и забыл выйти из системы? другое лицо, которое может получить доступ к вашим личным данным и изменить их без разрешения пользователя. и пользователь даже не знает, кто этот человек.

Чем короче интервал сеанса, тем меньше времени у злоумышленника на использование действительного идентификатора сеанса. Значения времени ожидания истечения сеанса должны быть установлены в соответствии с целью и характером веб-приложения, а также сбалансировать безопасность и удобство использования, чтобы пользователь мог удобно выполнять операции в веб-приложении без частого истечения срока действия его сеанса.

Как простое, так и абсолютное время ожидания сильно зависят от того, насколько важны веб-приложение и его данные. Общие диапазоны времени простоя составляют 2–5 минут для приложений с высокой ценностью и 15–30 минут для приложений с низким уровнем риска. Абсолютные тайм-ауты зависят от того, как долго пользователь обычно использует приложение. Если приложение предназначено для использования офисным работником в течение всего дня, подходящий диапазон абсолютного времени ожидания может составлять от 4 до 8 часов.

Обработка сеанса на стороне сервера

«auto-session-timeout» обеспечивает автоматический тайм-аут сеанса в приложении Rails.

Вам необходимо настроить два действия: одно для возврата статуса сеанса, а другое запускается по истечении времени ожидания сеанса. Вы можете использовать действия по умолчанию, включенные в гем, вставив эту строку в ваш целевой контроллер (скорее всего, ваш пользовательский или контроллер сеанса).

В любом из этих случаев обязательно правильно сопоставьте действия в файле route.rb.

Ссылка для auto-session-timeout

Обработка выхода из системы на стороне клиента

Автоматический выход клиента

Код JavaScript может использоваться веб-приложением на всех (или критических) страницах для автоматического выхода из клиентских сеансов после истечения времени простоя, например, путем перенаправления пользователя на страницу выхода (тот же ресурс, который используется кнопкой выхода из системы, упомянутой ранее). .

Преимущество улучшения функции тайм-аута простоя на стороне сервера с помощью кода на стороне клиента заключается в том, что пользователь может видеть, что сеанс завершен из-за бездействия, или даже может быть заранее уведомлен о том, что сеанс скоро истечет с помощью таймера обратного отсчета. и предупреждающие сообщения. Этот удобный для пользователя подход помогает избежать потери работы на веб-страницах, которые требуют большого объема входных данных из-за сеансов, срок действия которых истек на стороне сервера.

Отключить кросс-табличные сеансы веб-браузера

Веб-приложения могут использовать код JavaScript после того, как пользователь вошел в систему и был установлен сеанс, чтобы заставить пользователя повторно аутентифицироваться, если новая вкладка или окно веб-браузера открывается в том же веб-приложении. Веб-приложение не хочет, чтобы несколько вкладок или окон веб-браузера использовали один и тот же сеанс. Поэтому приложение пытается заставить веб-браузер не использовать один и тот же идентификатор сеанса одновременно между ними.

ПРИМЕЧАНИЕ. Этот механизм не может быть реализован, если идентификатор сеанса передается через файлы cookie, поскольку файлы cookie используются всеми вкладками/окнами веб-браузера.

Тайм-аут первоначального входа в систему

Веб-приложения могут использовать код JavaScript на странице входа для оценки и измерения времени, прошедшего с момента загрузки страницы и предоставления идентификатора сеанса. Если попытка входа предпринимается через определенное время, клиентский код может уведомить пользователя о том, что максимальное количество времени для входа в систему прошло, и перезагрузить страницу входа, тем самым извлекая новый идентификатор сеанса.

Этот дополнительный механизм защиты пытается принудительно обновить предварительную аутентификацию идентификатора сеанса, избегая сценариев, в которых ранее использованный (или установленный вручную) идентификатор сеанса повторно используется следующей жертвой, использующей тот же компьютер, например, в атаках фиксации сеанса.

Принудительный выход из сеанса при закрытии окна веб-браузера

Веб-приложения могут использовать код JavaScript для захвата всех событий закрытия вкладок или окон веб-браузера (или даже назад) и выполнения соответствующих действий для закрытия текущего сеанса перед закрытием веб-браузера, эмулируя, что пользователь вручную закрыл сеанс через выход из системы. кнопка.

Событие «beforeunload» запускается, когда окно, документ и его ресурсы собираются выгрузиться. Документ по-прежнему виден, и событие по-прежнему можно отменить. Дальнейшее определение Ссылка ниже.



Шпаргалка по управлению сессиями