2010-09-15 4 views
1

Я говорю, пока вы не выйдете из системы, не закончите сеанс или не закроете браузер. Но правильно?Какова продолжительность жизни для cookie сеанса?

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

Я сказал, что сессия останется сиротой. Он говорит «нет», потому что их пользователи могут подключиться к сеансу, просто открыв браузер (используя только cookie). Я сказал ему, что это постоянный файл cookie, а не сеансовый файл cookie. И я сказал, что если это причина, нет ничего, что помешало бы пользователю экспортировать [постоянный] cookie на другой компьютер и начать сеанс на этом компьютере.

Сначала он сказал, что вы не можете экспортировать файл cookie, но когда я объяснил, как он сказал, он будет выглядеть, но так как многие люди, включая 2 архитектора, придумали дизайн, маловероятно, что все они ошибаются.

+0

Когда идентификаторы сеансов хранятся в файлах cookie, они сохраняются между сеансами браузера. Файл cookie будет отправлен с первоначальным запросом и восстановлен сеанс, если, конечно, не будут выполнены другие условия, о которых вы упоминаете. – pharalia

ответ

-3

Не уверен, что это то же самое, как ASP, но я знаю, что в PHP это 20 minutes

1

Там не является четкое определение «сеанса» в веб-приложениях. Веб-сайт может решить использовать постоянные куки или файлы cookie сеанса для поиска контекста сеанса при последующих запросах (или, возможно, что-то, кроме файлов cookie). Если просмотр сеанса выполняется через куки-файл сеанса, то то, что вы сказали о сиротском сеансе (на сервере, недоступном клиенту), является правильным.

Однако «при закрытии браузера» неоднозначно. Если у вас есть два экземпляра Internet Explorer, например, оба окна могут содержать файл cookie сеанса. Поэтому закрытие «браузера», отображаемое на странице веб-сайта, не обязательно очистит файл cookie.

4

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

1

Сессионный файл cookie - это файл cookie без истечения срока действия.

Обработка файлов cookie сеансов зависит от браузера и версии браузера, но обычно куки, которые не имеют срока годности, удаляются при закрытии последнего экземпляра этого браузера (lifetime = runtime of the browser).

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

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

Вот код JavaScript, устанавливающий «сессионный» файл cookie, который является только файлом cookie, где значение «Истекает» не установлено.

document.cookie="COOKIENAME=cookievalue"; 

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

document.cookie="COOKIENAME=cookievalue; expires=Fri, 31 Dec 9999 00:00:01 GMT"; 

В данных куки, отправленных на сервер не включает метаданные, такие как время истечения; сервер видит только пары ключ = значение. Данные об истечении срока действия предназначены только для просмотра браузером. Установки печенья с любым из указанных выше способов заставят браузер, чтобы отправить что куки на сервер таким образом:

Cookie: COOKIENAME=cookievalue 

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