![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
Хорошо, помечу вопрос решенным ;)
|
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
Если такую куку украдут - считай вход открыт Без базы та себе сделаешь кучу проблем, но если уже ты их желаешь, то храни так:
А параметр $login_time таскай в браузерной строке. Так ты легко сможешь проверить, не вышло ли время сессии и обновлять сможешь (через ж. конечно, но работать будет) Такую куку можно и потерять, злоумышленник сможет воспользоваться ей максимум на время сессии. A md5($pass) ты будешь обязан сделать, так как в открытом виде его после логина уже нигде не возмёшь (Ты же не собираешься пароль на сервере открытым текстом хранить??) Но по нормальному - конечно БД. Чистить её не надо, только обновлять сессию. (Ну или убивать запись, если юзер удалён). А запрос в in_memory table будет даже быстрее, чем работа с файлами полюбому. Да и потом, ты же за логином/пассом всё равно в БД бегаешь. А тут надо будет только за ИД сессии. Добавлено @ 01:38 Не совсем так. Куку конечно украсть сложно, но всё таки можно. Скрипты, ссылки, флэши. Например на форуме у нас Гирдер регулярно находит такие новые дыры и закрывает их. Если подумать, что было на форуме год назад, то удивишься, как не поворовали наши аккаунты уже давно |
||||
|
|||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
Я считаю так:
Юзер сам должен следить за своими куками, и это исключительно его проблемы. На сайте должна быть опция "Не запоминать меня" ("Вход с чужого компьютера") при нажатии которой, куки не устанавливаются. Куки нужны только для распознавания юзера, далее все поставлено на сессиях. А вот сессии уже можно хранить в БД (убедили все же Как вам такой алгоритм? |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
Это ты потом докажи 100 человек, у которых скриптом с твоего сайта куки слизали и приватную переписку всех со всеми опубликовали Это хрени: md5($login.' '.$pass) нечего делать у юзера на компе в куках. Это во первых. Во вторых pass в открытом виде не должен существовать вообще нигде, кроме головы пользователя.
Куки нужны для распознавания сессии, а всё остальное хранится уже в ней. Зачем хранить у юзер что либо, кроме идентификатора сессии? ПС: ИД сессии идеале обновляется постоянно. При этом несколько вариантов учитываются как валидные, и старые потихоньку отмирают. |
||||
|
|||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
||||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
Можно спросить, зачем? Если юзер поменяет ник, ему надо будет новый пасс задавать? |
|||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
По-моему мы пришли к тупику. Если куки такие ненадежные - их тогда совсем не использовать? Собственно можно ответить "Да" но замены cookie еще нет, Поэтому, если хотим помнить о посетителях - используем cookie, в таком виде, как я указывал ранее.
Насчет хранения сессий (БД/файлы) это уже имхо другая тема. Вообще к БД доступ лучше,быстрее да и удалять из нее инфу легче. Так что наверное буду использовать БД. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
Почему куки ненадёжные? Храни СИД в них, время жизни которого на сервере контролируется. Ну и логин, чтобы перебором никто не попытался пройти.
Больше ничего не надо. (Так и тут на форуме сделано). |
|||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
sergejzr, Тогда время жизни сессии нужно большим устанавливать, если я тебя правильно понял.
Если мы хотим Помнить о юзере как минимум неделю. А в куке хранится SID. По этому SID мы обращаемся в БД и смотрим не просрочена ли сессия, если просрочена - удаляем сессию, и просим зарегиться пользователя? |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
Да.
С несколькоми сессиями - это не обязательно делать тут овчинка выделки нестоит. Но неплохо было бы "освежать" их. В идеале - при каждом вызове страницы давать новый СИД. Тогда даже если ктото украдёт его, то юзер "вылетит" со страницы, и большой шанс, что он это заметит и тут же залогинится. Тогда старый СИД у нападавшего станет бесполезным, он же не может новый получить. Но тут надо конечно с нагрузкой на БД сравнивать. Это же обновление записи при каждом входе. Можно например по времени генерить, каждые 5 минут. Проблема с таким подходом только в разных браузерах, так как куки обновятся только в одном. Тут помогло бы несколько сессий. Для каждого браузера своя независимая. В принципе оверхеда практически нет. Просто логину в стблице СИДов добавляешь хэш юзер-агента. Но тут можно много способов придумать, чтобы одним полем ограничится. Например номер сессии состоит из нескольких частей по части на каждый браузер. итд, итп. |
|||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
В общем, думаю использовать такой вариант:
Будет БД: session_id – SID сессии; session_expire – microtime последнего действия (точность до сотых); session_start - время логина (microtime до сотых секунды). user_id – ID юзера; login – хеш логина; Куки: SID Время логина Хеш логина юзера Соответственно ищем запись в Бд по SID, а потом проверяем: равны ли логин и время логина. Время действия можно задавать в конфигах, думаю мне подойдет 5 дней. Интересно что будет с БД. Если 10 000 человек будет бродить по сайту, и у каждого будет меняться microtime последнего действия? |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
||||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
||||
|
||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: 2 Всего: 20 |
Еще один вопрос по теме:
Если мы начинаем сессию (чтобы узнать SID) - создается файл. Через определенное время их будет слишком много. Что делать? |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 5 Всего: 360 |
||||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |