Вы не зашли.
#61.
TLENS
Off
(14)
Moderator
2011.09.15 01:01
Но зачем расшифровывать, если можно просто вставить в заголовок c куками и произвести авторизацию.
Я имею в виду шифровать пароль для записи в куку
Отредактировано TLENS (2011.09.15 01:01)
Ну я про куки не говорил, в куки пароль воопще незачем пихать, хоть зашифрованны, хоть незашифрованный. Для авторизации существуют сесси, они для этого и созданы, и нечего делать авторизацию на куках: возможностей меньше и защита меньше.
Или я снова, как всегда, не понимаю сути, или...
Все таки так, потому что это будет в шапке. А параметры мы задали в авторизации.
Код:
<?php |
|
if (isset($_COOKIE['PHPSESSID'])) { |
|
session_start(); |
} |
|
?> |
А так, при авторизации, если юзер нажмет запомнить.
Только вот сейчас вопрос возник, если юзер использовал сессию до истечения срока, например в 1 минуту, то удаление файла сессии снова отложится на 1440 сек или нет?
Код:
<?php |
|
//session_set_cookie_params(1440, '/', '.'.$_SERVER['HTTP_HOST'], false, true); |
|
ini_set('session.cookie_path', '/'); |
ini_set('session.cookie_domain', '.'.$_SERVER['HTTP_HOST']); |
session_start(); |
|
?> |
Отредактировано tipsun (2011.10.09 16:04)
Давать пасс в куку (даже шифрованный) не есть айс. Как делаю я
1. При авторизации(успешной) в базу записыватся хеш(рандомный) для определённого юзера и этот же хеш даётся юзеру в куку
2. Если юзер покинул сайт (нажал выход) идёт уничтожение куки у юзера и смена хеш в базе на рандомный.
3. Пароль узнать невозможно и сменить тоже, даже если авторизация была успешной(если каким то макаром удалось своровать действуюбщий хеш), т.к. при смене попросит вести старый пароль.
Отсюда имеем у юзера нет хеша, а если он его сохранил он всёравно не подойдёт, т.к. при выходе скрипт скрипт сам поменял хеш. Если юзер боиться что его акк взломали просто нужно нажать выход и заново авторизироваться(хеш будет изменён)
Ну как так ))
tipsun написал:
... Только вот сейчас вопрос возник, если юзер использовал сессию до истечения срока, например в 1 минуту, то удаление файла сессии снова отложится на 1440 сек или нет?
Время отсчитывается от последнеого обращения посетителя т.е. это время доступа к файлу, а не создания.
Отредактировано tipsun (2011.10.09 14:02)
С механизмом запоминания наверно можно так поступить:
- при авторизации пользователь указывает сайту "запомни меня".
- сайт создает обычную сессию + куку, имя которой заносится в базу.
Если есть PHPSESSID у пользователя, значит не надо проверять куку.
Другое дело, если PHPSESSID есть, а файл сессии удалился...
Наверно проверить по куке и сгенерировать новый PHPSESSID.
Это я только сейчас додумался, точнее сама в голову пришла идея.
Хотя давно все так делают

100%
можно еще при "запомни меня" время жизни сессии принудительно ставить большое.
Получается session_id() в базу надо будет заносить.
Код напишу, выложу.
Насчет сроков не посмотрел. Ну регерится с теми же сроками или нет.
Остальное за файлом/механизмом авторизации.
Код:
<?php |
|
if (isset($_COOKIE['PHPSESSID'])) { |
session_start(); |
|
if (! isset($_SESSION['SELF'])) { |
//Запрос к БД о наличии заданной session_id() |
//PHPSESSID=d65fjsmf8kc69ee8urb1glh855 |
//Можно было бы и SELECT COUNT(1) FROM `users` WHERE `PHPSESSID`='d65fjsmf8kc69ee8urb1glh855'; +- LIMIT 1; |
//Но надо, наверно, вытащить какую-нибудь важную инфу, поэтому скорее всего... |
//SELECT `uid` FROM `users` WHERE `PHPSESSID`='d65fjsmf8kc69ee8urb1glh855' LIMIT 1; |
if (/*Подсчет кол-ва затронутых строчек*/) { |
$_SESSION = array(); |
session_regenerate_id(); |
$_SESSION['SELF'] = true; |
//выплевываем данные с массива базы в массив сессии... |
} else { |
//отрубить сессию, может быть. |
} |
} |
} |
Отредактировано tipsun (2012.02.10 23:11)