Сеанс выживает, браузер закрывается?Должен ли я предотвратить это? - PullRequest
1 голос
/ 31 мая 2011

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

Но, если я войду в систему, закройте свой браузер и сноваоткройте его, переменные $ _SESSION все еще существуют.

Какова общая практика здесь?Должен ли я предотвратить это, и если да, то как?

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

Что делают другие?

Ответы [ 3 ]

4 голосов
/ 31 мая 2011

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

Если вы закрываете браузер, куки сохраняются.Сервер не знает, какой экземпляр браузера использует пользователь, перезапустил ли он браузер или даже перезапустил компьютер.

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

Если вы беспокоитесь о безопасности - то есть вы программируете приложение с высокой степенью защиты, такое как платежный шлюз - вы можете следовать практике банковских веб-сайтов или других платежных шлюзов;

Когда пользователь возвращается всайт, они все еще вошли в систему, но когда они пытаются выполнить какое-либо действие, которое повлияет на вошедшего в систему пользователя, повторно пройти аутентификацию с другим экраном пароля или запросить некоторую запоминающуюся информацию.

2 голосов
/ 08 августа 2011

Когда вы явно устанавливаете cookie, вы можете выбрать время его истечения. Когда вы используете session_start () для создания cookie сессии, время его истечения определяется значением session.cookie_lifetime в php.ini. Если для этого параметра установлено значение 0, сеансовые файлы cookie истекают после закрытия окна браузера.

2 голосов
/ 31 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...