![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| YuraKo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.3.2008 Где: Украина г.Хмельни цкий Репутация: нет Всего: нет |
Здрастуйте! Хочу написать правельную и профессиональную аутентификацию для сайта.
1)Где нужно хранить данные пользователя? В сессии или в куках? Куки "смущают" потому, что их можно получить не сразу а только после перезагрузки страницы 2)Галочка "Запомнить". Я так думаю что когда галочка отмечена то данные должны храниться в куках... Вобщем прошу правельного профессионального совета как правельно сделать... |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Ну, смущать тебя должна, скорее, непродуманность вопроса, а не куки.
Что с того, что они становятся доступны только после перезагрузки? Как это может помешать? О каких данных речь? Обычно данные пользователя хранятся в базе. В сессии достаточно хранить только уникальный идентификатор юзера, а по нему доставать из базы всю остальную информацию. Механизм сессий тем хорош, что он автоматически завершает сессию по истечении таймаута или при закрытии браузера. Плюс возможность хранить любой разумный объем информации, введенные в форму данные, например. Про запомнить правильно думаешь. Поскольку больше никакого способа, кроме кук, и нет. |
|||
|
||||
| YuraKo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.3.2008 Где: Украина г.Хмельни цкий Репутация: нет Всего: нет |
Речь о тех же уникальных идентификаторах. Почему меня смущает то что кука читается после перезагрузки, потому что у меня во время одной перезагрузки идет запись в куку и сразу считывание с нее, возможно я плохо продумал действие.., кука тоже действует до истечения таймаута, покрайней мере в фреймворку CodeIgniter с обычными куками не работал, вобщем изначально думал отказаться от сессий и все через куки делать, но чтоб не написать кусок кода зря решыл спросить у людей которые имели дело с алгоритмами аутентификации...
Хотелось бы услишать несколько вариантов от людей которые раньше имели дело с аутентификацией( с запоминанием на сайте).. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Если держать в куках уникальный идентификатор без всякой обработки, то это будет не авторизация, а решето. В этом принципиальное отличие кук от сессий. Сдается мне, что механизм сессий в РНР ты представляешь себе очень смутно. А в этом случае понять даваемые тебе рекомендации ты не сможешь. Поэтому рекомендую почитать сначала что-нибудь, а потом уже формулировать вопросы.
|
|||
|
||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
использую сесии + куки...
сессии для того, чтоб пользователь был авторизован т.к. проверка идет на сессию куки - чтоб пользователь был запомнен (если он этого хочет) |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
и все, нечего лишнего -------------------- Amazing |
|||
|
||||
| YuraKo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.3.2008 Где: Украина г.Хмельни цкий Репутация: нет Всего: нет |
Да механизм работы сессий и кук знаю поверхностно,... вобщем думал сделать как Shark, хотелось бы увидеть больше подробное расписание... чтото типа:
1)Когда юзер вводит свои данные.......... 2)Когда выходит тайм-аут сессии............ 3)Если отмечена галочка "Запомнить".... ............................................. |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
а защиту от ботов? лимит не правильных попыток потом каптчу выдавать... значительно повысит защиту входа от брутных переборов пароля роботами.
Лимит сессии можно сделать простым, если пользователь неактивен втечении 1 часа то при обращение к скрипту уничтожить сессию.
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Sanchezzz, а это ничего, что сессия сама прибьется по умолчанию через 24 минуты, сильно не дождавшись твоего часа?
И что означает константа SESSIONTIME? И почему ты решил, что пользователь собирается сидеть на сайте не больше часа? Ты хорошо подумал, когда писал этот бесполезный и нерабочий код? |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
YuraKo, кука - это единственное средство идентификации HTTP клиента. Для веб-сервера все клиенты изначально анонимны и равноправны. Если пользователь зашел на сайт, и потом кликнул по ссылке, то сервер никак не может узнать, тот же самый это ползователь сейчас запросил страницу, или другой. Поэтому и были придуманы куки. Сервер ставит куку клиенту, которую клиент отправляет на сервер при каждом запросе. Так сервер может отличать клиентов друг от друга.
Сессия - это продолжение механизма кук, придуманное для того, чтобы во-первых, можно было хранить неограниченное количество сеансовых данных (объем кук очень ограничен) во-вторых, для большей безопасности в-третьих, для большего удобства в-четвертых, для того... чтобы обходиться без кук Технически, сессия представляет собой куку со случайным неподбираемым значением (что повышает безопасность) плюс файл на сервере, имя которого совпадает со значением куки. Клиент присылает куку, сервер читает файл, и получает из него нужные данные. Сессии устроены так, что при закрытии браузера или превышении таймаута (24 минуты по умолчанию) они закрываютс автоматически. Поэтому, когда юзер вводит свои данные, нужно написать всего одну строчку, $_SESSION['sess_user']=чем у тебя там идентифицируется юзер Когда выходит таймаут, ничего делать не надо Когда ставят галочку "запомнить", ставим на долгий срок куку с информацией, по которой можно идентифицировать юзера, но которую невозможно подделать. Например, sha1 от пароля и секретного слова. |
|||
|
||||
| Sanchezzz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
А ты уверен что он не работает? Если я не написал полное готовое решения это еще не значит, что оно не работает Это сообщение отредактировал(а) Sanchezzz - 9.7.2009, 12:36 -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
||||
|
|||||
| YuraKo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.3.2008 Где: Украина г.Хмельни цкий Репутация: нет Всего: нет |
Ипатьев, Спасибо за бодробное описание.
Вобщем зделал так. 1) в сессиях записал user_name и user_id, в куках user_name и chek_user(1 - если галочка не отмечена и 2 - если отмечена) 2)если галочка оимечена(кука=2) то $this->config->set_item('sess_expiration',0)-тайм аут сессии неограничен,но если сессия все же умерла(например закрытие браузера или ограниченый тайм аут на сервере), то читаю user_name c куки и возобновляю сессию. И я так понял инфу в куках(в моем случае user_name) нужно кодировать.. |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
инфу кодировать надо. менять время работы сессии не надо.
зачем check_user писать в сессию - непонятно. оно нужно ровно в один момент: во время авторизации. зачем его постоянно таскать в сессии? Это сообщение отредактировал(а) Ипатьев - 9.7.2009, 14:02 |
|||
|
||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
ну я сделал так (может немного и не правильно)
пользователь вводит данные (без запоминания): 1. логин сохраняется в сессии и другие нужные мне параметры 2. когда пользователь обновляет страницу и/или просмотривает страницы.. время последней активности меняется, тем самым эти 24 минуты можно растянуть.. сессия умирает если пользователь ничего не делает с запоминанием: человечек ставит галочку "Запомнить" и включают и сессии и куки.. в куках у меня Логин (хеш) сравнивается не с БД с хешом для ника в файле и время (в UNIX) и дальше куки обновляются так же как и сессии... время для того, чтоб чло сравнение.. т.е. пользователь ушел на другую страницу обновилась кука и время последней активности в бд... а потом время в куке сравнивается с временем в БД и так же с файлом и пользователь авторизован в течении 5 дней Это сообщение отредактировал(а) Shark - 9.7.2009, 16:58 |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Shark, тебя довольно сложно понять. Что значит "Логин (хеш) сравнивается не с БД с хешом для ника в файле"?
|
|||
|
||||
| YuraKo |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.3.2008 Где: Украина г.Хмельни цкий Репутация: нет Всего: нет |
Ипатьев, chek_user не в сесси а в куке, если галочка отмечена а сессия умерла, проверяю куку( chek_user) и если надо возобновляю сессию..
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
В куках оно тем более не имеет смысла. Сам факт наличия куки - это и есть одновременно и 2 и check_user
Есть кука - значит поставил галочку. Нет куки - не ставил. Вместо бессмысленной галочки надо писать неподделываемый хэш. |
|||
|
||||
| morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
Глупость скажу, но молчать тоже не буду...
Посмешило слово "профессиональный" подход Единого профессионального подхода нет, есть задача и несколько путей решений, в зависимости от других обстоятельств один будет лучше в одной ситуации, и другой соответственно в друггой. Профессиональный подход это не выбор лучшего пути, а выбор подходящего для данного конкретного случая. Теоретически даже просто хранение в куках логина и пароля имеет право на жизнь (если того требует ситуация, хотя я конечно не бывал в таких ситуациях) Это сообщение отредактировал(а) morfus - 9.7.2009, 22:46 |
|||
|
||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
есть отдельный файл:
Логин | Хеш при регистрации идет запись в БД и в файл....и когда работаю с куками, то в куках у меня хеш логина... который сравнивается с хешом в файле. когда я писал, был не особо трезв |
|||
|
||||
![]()
|
| Правила форума "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. |