Завершение сессии при закрытии браузера

Eten

Вопрос над которым бъюсь уже не одну неделю. В инете встретил не мало решиний, но все они имеют свои "но". Собственно задача - заверишть сессию пользователя при закрытии браузера. КАК?
23 ответа

Eten

а что нибудь более конструктивное можно?


Eten

а что нибудь более конструктивное можно?
Обсуждалось миллион раз. Именно по закрытию - никак. Такой ответ устроит?


Eten

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


Eten

<sessionState cookieless="true" />


Eten

Браузер закрыли, сохранённый в нём идентификатор сессии (в куках) удалился, соответственно при новом открытии браузера эта сессия для него потеряна. На сервере сессия ещё будет жить до таймаута.


Eten

Хорошо, перефразирую.вот пример системы, где после закрытия браузера и последующего открытия любой страницы требуется логинится заново. Мне нужно реализовать такую же функцифональность. Какие здесь могут быть решения?
При чём здесь сессия? Что Вам азбуку по слогам рассказывать? Сессия - это айди сессии в виде кукиса или параметра в гет-запросе (автоматически делается, если кукисы отключены). Хранятся данные сессии на сервере где угодно, в файле, в базе и т.д. Хотите, чтобы "как там" было, в кукисах не задавайте зкспиреc. По умолчанию - закрытие браузера их удаляет. Хотите самостоятельно удалить - экспиреc установите раньше, чем "сейчас".


Eten

Хорошо, перефразирую.вот пример системы, где после закрытия браузера и последующего открытия любой страницы требуется логинится заново.
Где там видно явное закрытие сессии? Не уверен, что она там даже открывается, по крайней мере в демо режиме.


Eten

При чём здесь сессия? Что Вам азбуку по слогам рассказывать? Сессия - это айди сессии в виде кукиса или параметра в гет-запросе (автоматически делается, если кукисы отключены). Хранятся данные сессии на сервере где угодно, в файле, в базе и т.д. Хотите, чтобы "как там" было, в кукисах не задавайте зкспиреc. По умолчанию - закрытие браузера их удаляет. Хотите самостоятельно удалить - экспиреc установите раньше, чем "сейчас".
Касательно куков у меня в web.config есть следующее:
<forms name="cli" loginUrl="~/Login.aspx" defaultUrl="~/index.aspx" protection="All" timeout="15" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" domain="" enableCrossAppRedirects="false" >
Время жизни куков нигде не задано и по идее переменная SessionID должна сбрасываться, но этого не происходит! Пробовал менять slidingExpiration на false, но ничего не меняется. После закрытия браузера я так же могу зайти на любую страницу сайта, не вводя пароля.


Eten

Starlex,не суть важно, я описал лишь поведение


Eten

Браузер закрыли, сохранённый в нём идентификатор сессии (в куках) удалился, соответственно при новом открытии браузера эта сессия для него потеряна. На сервере сессия ещё будет жить до таймаута.
вот именно вот этого у меня не происходит


Eten

Eten,А Вы точно браузер закрываете? Может, вы закрываете вкладку или один из экземпляров одного и того же браузера?ПС. Почитайте таки про кукисы.


Eten

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


Eten

Сейчас посмотрел в Опере и в Лисе. там все нормально. В опере при просмотри куков даже нашел переменную с именем SessionID и после её удаления происходит редирект на страницу логина. Выходит дело в настройках IE?


Eten

Полтергейст прям p.s. тупой internet explorer 8 при закрытии браузера сессионные куки часто неудаляет, поначалу было неожиданностью, потом привык. И куки в нём тоже неудаляются, пытался вручную почистить из temporaty internet files - всё удалилось, куки остались, пытался очистить в настройках браузера - та же история, индусы его прям заколдовали багами (win2003+ie8).


Eten

Блин, а как же безопасность!?


Eten

st_st,а можно ссылочку какую-нить на страницу с описанием бага?


Eten

Таймаут всё равно наступит, сессия на сервере отвалится, при новом запросе браузер получит новый id. Не будет же пользователь сидеть круглыми сутками и обновлять страницу каждые (к примеру) 20 минут.Всё тут нормально с безопасностью.


Eten

Интересно. Первый раз слышу такое. Никогда не сталкивался.


Eten

Таймаут всё равно наступит, сессия на сервере отвалится, при новом запросе браузер получит новый id. Не будет же пользователь сидеть круглыми сутками и обновлять страницу каждые (к примеру) 20 минут.Всё тут нормально с безопасностью.
Ситуация - пользователь вошел, сделал операции, закрыл браузер. Через 5 минут за комп сел злоумышленник открыл последнюю страницу и спокойно сделал то что, ему нужно.


Eten

Для этих целей делается кнопка "Выход", к примеру как на mail.ru сделан выход из почтового ящика с очисткой куки, второе - сессия ставится на непродолжительное время, например минут на 20.


Eten

st_st,то есть типа не нажал на "выход" - сам виноват?


Eten

Однако тот же mail.ru сразу разлогинивается, если подчистить куки


Eten

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