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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Авторизация, и снова она... 
V
    Опции темы
Рыжий
Дата 7.2.2007, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



Хорошо, помечу вопрос решенным ;)
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(Рыжий @  6.2.2007,  23:01 Найти цитируемый пост)
$_COKIE['my_info'][0] = ID пользователя
$_COOKIE['my_info'][1] = md5($login.' '.$pass);

Если такую куку украдут - считай вход открыт smile

Без базы та себе сделаешь кучу проблем, но если уже ты их желаешь, то храни так:
Код

$_COKIE['id'] = ID пользователя
$_COOKIE['session_id'] = md5($login.' '.md5($pass).' '.$login_time);

А параметр $login_time таскай в браузерной строке. Так ты легко сможешь проверить, не вышло ли время сессии и обновлять сможешь (через ж. конечно, но работать будет) Такую куку можно и потерять, злоумышленник сможет воспользоваться ей максимум на время сессии.

A md5($pass) ты будешь обязан сделать, так как в открытом виде его после логина уже нигде не возмёшь (Ты же не собираешься пароль на сервере открытым текстом хранить??)

Но по нормальному - конечно БД. Чистить её не надо, только обновлять сессию. (Ну или убивать запись, если юзер удалён). А запрос в in_memory table будет даже быстрее, чем работа с файлами полюбому. Да и потом, ты же за логином/пассом всё равно в БД бегаешь. А тут надо будет только за ИД сессии.

Добавлено @ 01:38 
Цитата(-=Ustas=- @  7.2.2007,  00:11 Найти цитируемый пост)
Рыжий, smile это уже проблемы пользователя, и ты ничего с этим не поделаешь. Это равносильно, что оставлять ключи от сейфа на вешалке в коридоре. Если пользователь пускает на свою тачку всех подряд, то повторюсь - это его проблемы, а не твои.

Не совсем так. Куку конечно украсть сложно, но всё таки можно. Скрипты, ссылки, флэши. Например на форуме у нас Гирдер регулярно находит такие новые дыры и закрывает их. Если подумать, что было на форуме год назад, то удивишься, как не поворовали наши аккаунты уже давно smile))


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 7.2.2007, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



Я считаю так:

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

Куки нужны только для распознавания юзера, далее все поставлено на сессиях. А вот сессии уже можно хранить в БД (убедили все же  smile ).  В Бд могут быть те же md5($login.' '.$pass). и время валидности сессии.

Как вам такой алгоритм?
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(Рыжий @  7.2.2007,  00:50 Найти цитируемый пост)
Юзер сам должен следить за своими куками, и это исключительно его проблемы.

Это ты потом докажи 100 человек, у которых скриптом с твоего сайта куки слизали и приватную переписку всех со всеми опубликовали smile

Цитата(Рыжий @  7.2.2007,  00:50 Найти цитируемый пост)
Как вам такой алгоритм? 

Это хрени: md5($login.' '.$pass) нечего делать у юзера на компе в куках. Это во первых. Во вторых pass в открытом виде не должен существовать вообще нигде, кроме головы пользователя.
Цитата(Рыжий @  7.2.2007,  00:50 Найти цитируемый пост)
Куки нужны только для распознавания юзера, далее все поставлено на сессиях. 

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

ПС:
ИД сессии идеале обновляется постоянно. При этом несколько вариантов учитываются как валидные, и старые потихоньку отмирают.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 7.2.2007, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



Цитата(sergejzr @  7.2.2007,  02:05 Найти цитируемый пост)
Это хрени: md5($login.' '.$pass) нечего делать у юзера на компе в куках.

Ясное дело! Поэтому я храню это в БД у себя.

То есть в куках хранить SID будет наиболее приемлемым вариантом?
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(Рыжий @  7.2.2007,  01:08 Найти цитируемый пост)
Ясное дело! Поэтому я храню это в БД у себя.

Можно спросить, зачем?
Если юзер поменяет ник, ему надо будет новый пасс задавать?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 7.2.2007, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



По-моему мы пришли к тупику. Если куки такие ненадежные - их тогда совсем не использовать? Собственно можно ответить "Да" но замены cookie еще нет, Поэтому, если хотим помнить о посетителях  - используем cookie, в таком виде, как я указывал ранее.

Насчет хранения сессий (БД/файлы) это уже имхо другая тема. Вообще к БД доступ лучше,быстрее да и удалять из нее инфу легче. Так что наверное буду использовать БД.
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Почему куки ненадёжные? Храни СИД в них, время жизни которого на сервере контролируется. Ну и логин, чтобы перебором никто не попытался пройти.
Больше ничего не надо. (Так и тут на форуме сделано).


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 7.2.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



sergejzr, Тогда время жизни сессии нужно большим устанавливать, если я тебя правильно понял.

Если мы хотим Помнить  о юзере как минимум неделю. А в куке хранится SID. По этому SID мы обращаемся в БД и смотрим не просрочена ли сессия, если просрочена - удаляем сессию, и просим зарегиться пользователя?
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Да. 

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

Но тут надо конечно с нагрузкой на БД сравнивать. Это же обновление записи при каждом входе. Можно например по времени генерить, каждые 5 минут.

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

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





--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 7.2.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 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 последнего действия? 
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(Рыжий @  7.2.2007,  14:40 Найти цитируемый пост)
Интересно что будет с БД. Если 10 000 человек будет бродить по сайту, и у каждого будет меняться microtime последнего действия?  

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

Цитата(Рыжий @  7.2.2007,  14:40 Найти цитируемый пост)
Если 10 000 человек будет бродить по сайту,

А Вы, батенька, оптимист однако smile



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Рыжий
Дата 7.2.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



Цитата(sergejzr @  7.2.2007,  15:50 Найти цитируемый пост)
Если будешь менять его раз в несколько минут, то ничего страшного не будет.


Эврика! Тогда берем microtime из бд и проверяем, если он больше 5 минут - обновляем (к примеру...)


Цитата(sergejzr @  7.2.2007,  15:50 Найти цитируемый пост)
А Вы, батенька, оптимист однако

Еще какой! smile 
PM MAIL ICQ   Вверх
Рыжий
Дата 7.2.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


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

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



Еще один вопрос по теме:
Если мы начинаем сессию (чтобы узнать SID) - создается файл. Через определенное время их будет слишком много. Что делать?
PM MAIL ICQ   Вверх
sergejzr
Дата 7.2.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(Рыжий @  7.2.2007,  18:49 Найти цитируемый пост)
Если мы начинаем сессию (чтобы узнать SID) - создается файл. Через определенное время их будет слишком много. Что делать? 

Файл будет если ты через ПХП создаёшь. У тебя же БД, зачем тебе теперь он?



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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