Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Вниз

Хранение сессии в кукисах   Найти похожие ветки 

 
БарЛог ©   (2008-06-19 11:34) [0]

Всем привет. Всё тот же интернет-магазин :)
Делаю "Залогинивание". Что хранить в кукисах?
Логин - по-любому (если зарегистрированный). Пароль - небезопасно.

Как тогда скрипту определить, что логин в кукисах не вбит руками?


 
McSimm ©   (2008-06-19 11:36) [1]


> Что хранить в кукисах?

уникальный идентификатор, по которому на сервере можно найти сессионную информацию


 
McSimm ©   (2008-06-19 11:38) [2]


> Как тогда скрипту определить, что логин в кукисах не вбит
> руками?

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


 
Сергей_77   (2008-06-19 11:39) [3]

а в сессии еще сравнивать не изменилось ли IP  с момента логина .. (дабы исключить возможность перехвата ID  сессии)


 
McSimm ©   (2008-06-19 11:41) [4]

IP часто меняется "на законных основаниях".


 
БарЛог ©   (2008-06-19 11:42) [5]

Ну а сколько тогда этой сессии жить?
Вот я, например, зашёл на делфимастер (кстати, там хранится логин и идентификатор, как я понял), закрыл его, зашел через неделю - сессия сохранилась! Нет?


 
Тын-Дын ©   (2008-06-19 11:44) [6]


> БарЛог ©   (19.06.08 11:42) [5]
> Ну а сколько тогда этой сессии жить?

В зависимости от задачи.


 
Сергей_77   (2008-06-19 11:45) [7]


> IP часто меняется "на законных основаниях".

в пределах 1-ной сессии?  очень маловероятно, это тока если пользователь постоянно переподключается на разных прокси или динамическое IP- но тоже меняется при переподключениях тока.

Хотя на многих современных почтовых сервисах есть возможность включать контроль IP в пределах 1 сессии или нет ..

Имхо включать обязательно, иначе любой банальный  javascript  может  украсть ID  сессии или даже все куки . ...


 
Сергей_77   (2008-06-19 11:46) [8]


> Ну а сколько тогда этой сессии жить?

имхо 1 час достаточно


 
Ega23 ©   (2008-06-19 11:47) [9]


> Ну а сколько тогда этой сессии жить?


В PHP - 24 минуты. Можно настроить.
У нас идея (но это с AJAX) - раз в минуту HandShake выдавать со стороны браузера. Тогда действительно можно довольно быстро неиспользуемые сессии прибивать.


 
McSimm ©   (2008-06-19 11:48) [10]

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

Время жизни сессии определяется исключительно личным пожеланием разработчика или заказчика. Можно делать как Ozon.ru - "помнить" клиента всегда, но через определенное время неактивности снимать признак авторизованности (требовать авторизацию для критичных действий).


 
McSimm ©   (2008-06-19 11:51) [11]


> > IP часто меняется "на законных основаниях".
> в пределах 1-ной сессии?

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


 
Плохиш ©   (2008-06-19 11:56) [12]


> Ну а сколько тогда этой сессии жить?

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


 
БарЛог ©   (2008-06-19 11:59) [13]

> Пока браузер не закроют, это для сессии. Закрыл браузер, открыл, изволь мил человек снова ввести пароль.

Хотелось бы этого избежать. В озоне не надо каждый раз вводить.


 
Ega23 ©   (2008-06-19 11:59) [14]


> Закрыл браузер, открыл, изволь мил человек снова ввести
> пароль.


И как сервер узнает, что ты закрыл браузер?


 
БарЛог ©   (2008-06-19 12:03) [15]

> И как сервер узнает, что ты закрыл браузер?

setcookie("qqq", $var);
Сохраняет пока не закрыл браузер.


 
Ega23 ©   (2008-06-19 12:05) [16]


> setcookie("qqq", $var);
> Сохраняет пока не закрыл браузер.
>


куку записал, а потос ручками в GET ввёл. А сессия на сервере - ещё жива...


 
Плохиш ©   (2008-06-19 12:06) [17]


> Ega23 ©   (19.06.08 11:59) [14]

Кукисы с временем жизни сессии, закрыл браузер - кукисы стёрлись
Expires := -1;


 
Ega23 ©   (2008-06-19 12:11) [18]


> Кукисы с временем жизни сессии, закрыл браузер - кукисы
> стёрлись
> Expires := -1;


На БУМАЖКУ куку записал.


 
Сергей_77   (2008-06-19 12:11) [19]

setcookie("qqq", $var,time()+24*60*60*333,"/")
кука на год))


 
БарЛог ©   (2008-06-19 12:13) [20]

> Кукисы с временем жизни сессии, закрыл браузер - кукисы стёрлись
> Expires := -1;

Ну это жёстко :) Хотя куки можно украсть, пока браузер открыт. Тем же джава-скриптом или трояном.


 
БарЛог ©   (2008-06-19 12:14) [21]

Сергей_77   (19.06.08 12:11) [19]
Вот интересно, как удаляются куки, когда срок истекает?
Удаляются при запуске эксплорера? Или при обращении к сайту, от которого куки?


 
b z   (2008-06-19 12:15) [22]

Корзину хранить в сессии, сессию в базе, с настрорйкой таймаутов и т.д.


 
McSimm ©   (2008-06-19 12:15) [23]


> Ega23 ©   (19.06.08 12:11) [18]

Можно куку записать на бумажку и потом вставить. И что ?
Это ж ты записал. Не хочешь, не записывай.

С тем же успехом можно просто не закрывать браузер


 
Сергей_77   (2008-06-19 12:18) [24]


> Удаляются при запуске эксплорера? Или при обращении к сайту,
>  от которого куки?

непользуюсь эксплорером практически поэтому немогу сказать(

Зато в опере есть классная настройка "чистить куки при выходе" очень удобно против всяких спайлогов и прочих трекеров


 
McSimm ©   (2008-06-19 12:19) [25]


> Вот интересно, как удаляются куки, когда срок истекает?

браузер перестает их отправлять.


 
McSimm ©   (2008-06-19 12:21) [26]


> очень удобно против всяких спайлогов и прочих трекеров

Ерунда это. Каких например ?

Эта настройка для параноиков. Чтобы посторонний не подсмотрел в ваше отсутствие.


 
Сергей_77   (2008-06-19 12:30) [27]


> Ерунда это. Каких например ?

Хотлог, спайлог да и много счётчиков, которых сейчас понаделали повсюду

и еще очень помогает бороться с разными "партнёрскими программами" которые основаны на кукисах :)


 
McSimm ©   (2008-06-19 12:34) [28]


> Сергей_77   (19.06.08 12:30) [27]

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


 
McSimm ©   (2008-06-19 12:36) [29]

если я захожу на delphimaster.ru, то никакие куки кроме delphimaster.ru записаны не будут и никому кроме delphimaster.ru не будут переданы.

зачем же мучить себя ?


 
БарЛог ©   (2008-06-19 13:09) [30]

Только что посмотрел на Озоне.
Сохраняется Session_ID и, если залогинился, Session_ID и Client_ID.
Время жизни у них (сессий), вроде бы, вечно (то есть, если я зайду через неделю, то буду автоматически залогинен).
Так нормально будет? Или небезопасно?


 
McSimm ©   (2008-06-19 13:19) [31]


> Так нормально будет? Или небезопасно?

Нормально.
Определять время сессии временем жизни куки на мой взгляд неправильно, правильно делать "вечные" куки и самому отслеживать временные интервалы при желании. Например, узнавая посетителя всегда, тем не менее при входе в персональные разделы просить авторизоваться, если истек интервал.
Можно добавить защиту от кражи Session_ID, сохраняя и проверяя user-agent (можно и IP или его часть)


 
БарЛог ©   (2008-06-19 13:31) [32]

> Нормально.
> Определять время сессии временем жизни куки на мой взгляд
> неправильно, правильно делать "вечные" куки и самому отслеживать
> временные интервалы при желании. Например, узнавая посетителя всегда, > тем не менее при входе в персональные разделы просить авторизоваться, > если истек интервал.
> Можно добавить защиту от кражи Session_ID, сохраняя и проверяя user-
> agent (можно и IP или его часть)

Спасибо. Буду делать так, если АП не переубедит :)


 
БарЛог ©   (2008-06-19 16:42) [33]

А что если к Session_ID и Client_ID "подмешивать", например, айпишник и имя_пользователя_виндовс ?

Тогда даже если кукис будет украден, злоумышленник не сможет его использовать.
Или не стОит?


 
McSimm ©   (2008-06-19 17:14) [34]

не подмешивать к ID, а хранить в сессионной информации на сервере.
И уж точно не имя пользователя виндоус :)
Юзер-агент и, возможно, IP - но я бы не стал IP.


 
БарЛог ©   (2008-06-19 17:59) [35]

А что за Юзер-агент?


 
БарЛог ©   (2008-06-19 18:01) [36]

И еще небольшой вопрос:
Из-за кеширования страниц браузером, он не всегда адекватно отображает состояние "залогинивания". То есть, например, в куках инфа уже есть, а страница отображается как будто куков нет. Приходится пару раз f5 нажимать.
Можно ли этого как-то избежать, не отключая возможность кеширования всей страницы?


 
McSimm ©   (2008-06-19 18:04) [37]


> И еще небольшой вопрос:

смешно :)

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


 
McSimm ©   (2008-06-19 18:05) [38]

кстати, там и про user-agent попадется.


 
БарЛог ©   (2008-06-19 18:08) [39]

Спасибо. Иду учиться :)


 
БарЛог ©   (2008-06-19 21:14) [40]

Вот, если кому надо, хорошая статья по заголовкам: http://www.computer-land.ru/page103.html



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2008.08.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.007 c
15-1213968206
Small Donkey
2008-06-20 17:23
2008.08.03
Размещение ваших программ


15-1213854630
Tim
2008-06-19 09:50
2008.08.03
Работа с mp3 без декодировния


2-1215152806
Вирт
2008-07-04 10:26
2008.08.03
Сохранить данные


15-1213627509
Viktor198
2008-06-16 18:45
2008.08.03
Помогите составить блок-схему для программы!!!


15-1213615001
wild
2008-06-16 15:16
2008.08.03
TDirectoryListBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский