Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принцип аутентификации, профессиональный подход 
V
    Опции темы
YuraKo
Дата 8.7.2009, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.3.2008
Где: Украина г.Хмельни цкий

Репутация: нет
Всего: нет



Здрастуйте! Хочу написать правельную и профессиональную аутентификацию для сайта.
1)Где нужно хранить данные пользователя? В сессии или в куках?  Куки "смущают" потому,  что их можно получить не сразу а только после перезагрузки страницы
2)Галочка "Запомнить". Я так думаю что когда галочка отмечена то данные должны храниться в куках...
Вобщем прошу правельного профессионального совета как правельно сделать...
PM MAIL   Вверх
Ипатьев
Дата 8.7.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Ну, смущать тебя должна, скорее, непродуманность вопроса, а не куки. 
Что с того, что они становятся доступны только после перезагрузки? Как это может помешать?

О каких данных речь? Обычно данные пользователя хранятся в базе. В сессии достаточно хранить только уникальный идентификатор юзера, а по нему доставать из базы всю остальную информацию. Механизм сессий тем хорош, что он автоматически завершает сессию по истечении таймаута или при закрытии браузера. Плюс возможность хранить любой разумный объем информации, введенные в форму данные, например.

Про запомнить  правильно думаешь. Поскольку больше никакого способа, кроме кук, и нет. 


PM MAIL   Вверх
YuraKo
Дата 9.7.2009, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.3.2008
Где: Украина г.Хмельни цкий

Репутация: нет
Всего: нет



Речь о тех же уникальных идентификаторах. Почему меня смущает то что кука читается после перезагрузки, потому что у меня во время одной перезагрузки идет запись в куку и сразу считывание с нее, возможно я плохо продумал действие.., кука тоже действует до истечения таймаута, покрайней мере в фреймворку CodeIgniter с обычными куками не работал,  вобщем изначально думал отказаться от сессий и все через куки делать, но чтоб не написать кусок кода зря решыл спросить у людей которые имели дело с алгоритмами аутентификации...
Хотелось бы услишать несколько вариантов от людей которые раньше имели дело с аутентификацией( с запоминанием на сайте)..
PM MAIL   Вверх
Ипатьев
Дата 9.7.2009, 01:00 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Если держать в куках уникальный идентификатор без всякой обработки, то это будет не авторизация, а решето. В этом принципиальное отличие кук от сессий. Сдается мне, что механизм сессий в РНР ты представляешь себе очень смутно. А в этом случае понять даваемые тебе рекомендации ты не сможешь. Поэтому рекомендую почитать сначала что-нибудь, а потом уже формулировать вопросы. 
PM MAIL   Вверх
Shark
Дата 9.7.2009, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



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


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 9.7.2009, 05:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

 header('WWW-Authenticate: Basic realm="Authorization"');
 header('HTTP/1.0 401 Unauthorized');
exit();


и все, нечего лишнего


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
YuraKo
Дата 9.7.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.3.2008
Где: Украина г.Хмельни цкий

Репутация: нет
Всего: нет



Да механизм работы сессий и кук знаю поверхностно,... вобщем думал сделать как Shark, хотелось бы увидеть больше подробное расписание... чтото типа:  
1)Когда юзер вводит свои данные..........
2)Когда выходит тайм-аут сессии............
3)Если отмечена галочка "Запомнить".... 
............................................. 
PM MAIL   Вверх
Sanchezzz
Дата 9.7.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



а защиту от ботов? лимит не правильных попыток потом каптчу выдавать... значительно повысит защиту входа от брутных переборов пароля роботами.
Лимит сессии можно сделать простым, если пользователь неактивен втечении 1 часа то при обращение к скрипту уничтожить сессию.
Код

session_start();
define('SESSIONTIME', time() + 3600); // типа настройка...

if(!empty($_SESSION['StartTime']) and $_SESSION['StartTime'] <= time() ){
            session_destroy();
}

// при авторизации делаем
$_SESSION['StartTime'] = time();





--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Ипатьев
Дата 9.7.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Sanchezzz, а это ничего, что сессия сама прибьется по умолчанию через 24 минуты, сильно не дождавшись твоего часа?
И что означает константа SESSIONTIME?
И почему ты решил, что пользователь собирается сидеть на сайте не больше часа? 
Ты хорошо подумал, когда писал этот бесполезный и нерабочий код?


PM MAIL   Вверх
Ипатьев
Дата 9.7.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



YuraKo, кука - это единственное средство идентификации HTTP клиента. Для веб-сервера все клиенты изначально анонимны и равноправны. Если пользователь зашел на сайт, и потом кликнул по ссылке, то сервер никак не может узнать, тот же самый это ползователь сейчас запросил страницу, или другой. Поэтому и были придуманы куки. Сервер ставит куку клиенту, которую клиент отправляет на сервер при каждом запросе. Так сервер может отличать клиентов друг от друга.

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

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

Поэтому, когда юзер вводит свои данные, нужно написать всего одну строчку, $_SESSION['sess_user']=чем у тебя там идентифицируется юзер
Когда выходит таймаут, ничего делать не надо
Когда ставят галочку "запомнить", ставим на долгий срок куку с информацией, по которой можно идентифицировать юзера, но которую невозможно подделать. Например, sha1 от пароля и секретного слова.


PM MAIL   Вверх
Sanchezzz
  Дата 9.7.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Цитата

Sanchezzz, а это ничего, что сессия сама прибьется по умолчанию через 24 минуты, сильно не дождавшись твоего часа?
 
  • не у всех на серверах стоит 24 минуты на сессию... 
  • иногда и файрфокс глючит когда закроешь сайт а потом откроешь а сессия еще жива и работает...
Цитата

define('SESSIONTIME', time() + 3600); // типа настройка...
 да с этим я чет немного промахнулся ,сори... 

А ты уверен что он не работает?
Если я не написал полное готовое решения это еще не значит, что оно не работает  smile 


Это сообщение отредактировал(а) Sanchezzz - 9.7.2009, 12:36


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
YuraKo
Дата 9.7.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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) нужно кодировать..
PM MAIL   Вверх
Ипатьев
Дата 9.7.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



инфу кодировать надо. менять время работы сессии не надо. 
зачем check_user писать в сессию - непонятно. оно нужно ровно в один момент: во время авторизации. зачем его постоянно таскать в сессии?



Это сообщение отредактировал(а) Ипатьев - 9.7.2009, 14:02
PM MAIL   Вверх
Shark
Дата 9.7.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



ну я сделал так (может немного и не правильно)
пользователь вводит данные (без запоминания):
1. логин сохраняется в сессии и другие нужные мне параметры
2. когда пользователь обновляет страницу и/или просмотривает страницы.. время последней активности меняется, тем самым эти 24 минуты можно растянуть.. сессия умирает если пользователь ничего не делает

с запоминанием:
человечек ставит галочку "Запомнить" и включают и сессии и куки..
в куках у меня Логин (хеш) сравнивается не с БД с хешом для ника в файле и время (в UNIX) и дальше куки обновляются так же как и сессии... время для того, чтоб чло сравнение..
т.е. пользователь ушел на другую страницу обновилась кука и время последней активности в бд... а потом время в куке сравнивается с временем в БД и так же с файлом и пользователь авторизован в течении 5 днейsmile..

Это сообщение отредактировал(а) Shark - 9.7.2009, 16:58


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 9.7.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Shark, тебя довольно сложно понять. Что значит "Логин (хеш) сравнивается не с БД с хешом для ника в файле"?
PM MAIL   Вверх
YuraKo
Дата 9.7.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 10.3.2008
Где: Украина г.Хмельни цкий

Репутация: нет
Всего: нет



Ипатьев,  chek_user не в сесси а в куке, если галочка отмечена а сессия умерла, проверяю куку( chek_user) и если надо возобновляю сессию..
PM MAIL   Вверх
Ипатьев
Дата 9.7.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



В куках оно тем более не имеет смысла. Сам факт наличия куки - это и есть одновременно и 2 и check_user 
Есть кука - значит поставил галочку. Нет куки - не ставил. Вместо бессмысленной галочки надо писать неподделываемый хэш.

PM MAIL   Вверх
morfus
Дата 9.7.2009, 22:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 30.6.2007

Репутация: 1
Всего: 2



Глупость скажу, но молчать тоже не буду...

Посмешило слово "профессиональный" подход

Единого профессионального подхода нет, есть задача и несколько путей решений, в зависимости от других обстоятельств один будет лучше в одной ситуации, и другой соответственно в друггой. Профессиональный подход это не выбор лучшего пути, а выбор подходящего для данного конкретного случая. Теоретически даже просто хранение в куках логина и пароля имеет право на жизнь (если того требует ситуация, хотя я конечно не бывал в таких ситуациях)



Это сообщение отредактировал(а) morfus - 9.7.2009, 22:46
PM MAIL WWW   Вверх
Shark
Дата 12.7.2009, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



есть отдельный файл:
Логин       |         Хеш

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


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.