Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SESSIONs and COOKIEs

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
T-Mon
Отправлено: 31 Января, 2008 - 08:59:50
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




У меня есть ряд вопросов по поводу использования сессий и крекеров.
1. Безопасно ли записывать в сессию только ID пользователя или стоит создавать 2 переменных, вторая из которых бы хранила md5 пароля? То есть не сможет ли никто подделать сессию, вписав просто ID или UserName жертвы. Элмент массива $_SESSION может иметь любой ключ, то есть переменная с любым ключем будет безопасна и корректно передаваться?
2. Как и реагируя на какие события стоит продливать действие крекера? Я так подозреваю, что продление осуществляется той же, что и создание/уничтожение... кстати, создавать крекер не можно просто присвоив значение $_COOKIE (есть ли возможность передавать время действия и URL действительности куки при таком методе)?
3. Насколько я понял функция setcookie() отправляет заголовки, что не даст возможность потом использовать функцию header(), как избежать подобного (опять же вопрос о присвоении элементу массива)?
4. Хотелось бы услышать комментарии по поводу своего алгоритма.

Авторизация:
Считываем имя/пароль и сверяем их с базой данных и если существует такой пользователь записываем его ид в сессию с ключем 'id' (если установлена галочка автоматический вход
создаем куки с имене id (его номер) и pass (md5 пароля)) и редирект на главную страницу, иначе вывод про ошибку в самой форме авторизации.

Повседненвая проверка (на каждой странице)+автоматическая авторизация:
Если существует сессия с его ID тогда просто отображаем страницу, иначе проверяем существует ли кукис, если существует - свереям (правильный ID и Pass - продливаем куки и создаем сессию с ID, иначе удаляем куки).

Выход:
Просто удаляем все сессии и все крекеры.

Собственно и все.
 
 Top
Dastar
Отправлено: 31 Января, 2008 - 11:22:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Не понимаю зачем тебе хранить в сессии пароль? Хватает и id.
Просто создаешь новую таблицу, в которую заносишь все session_id() авторизованных пользователей. А потом просто проверяешь, существует ли такой id в базе или нет. Если существует - пожалуста, гуляйте. Иначе предлагаешь пользователю авторизоваться или зарегестрироваться.


-----
Не знаешь - молчи.
 
 Top
Волк
Отправлено: 31 Января, 2008 - 12:31:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




У меня такой алгоритм
1. Если в сессии есть логин то выводим область "для зарегистрированных"
2. Если нет то выводим страницу со входом
3. Получаем от формы входа логин (и пароль)
4. Если он удачно сравнился с паролем (и если такой логин есть в базе данных) регистрируем этот логин в сессии (в вашем случае регистрация id из базы данных) пароль можно не регистрировать т.к. не зная пароля некто не может зарегистриовать логин в сессии

Пароли в куках хранить (даже в мд5) не рекомендуется. А если отмечено входить автоматически, то надо сделать (через куки) так чтобы после завершения сеанса сессия не обрывалась.

(Отредактировано автором: 31 Января, 2008 - 12:32:08)



-----
Таран - оружие героев!
 
 Top
valenok Модератор
Отправлено: 31 Января, 2008 - 17:44:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
1. Безопасно ли записывать в сессию только ID пользователя или стоит создавать 2 переменных, вторая из которых бы хранила md5 пароля? То есть не сможет ли никто подделать сессию, вписав просто ID или UserName жертвы. Элмент массива $_SESSION может иметь любой ключ, то есть переменная с любым ключем будет безопасна и корректно передаваться?


Может если понимать пнринцип действия - станет проще. http://phpclub[dot]ru/detail/article/sessions

Цитата:
2. Как и реагируя на какие события стоит продливать действие крекера? Я так подозреваю, что продление осуществляется той же, что и создание/уничтожение... кстати, создавать крекер не можно просто присвоив значение $_COOKIE (есть ли возможность передавать время действия и URL действительности куки при таком методе)?


Продлевать уничтожать только когда вам нужно.
setcookie фактически единтсвенная и всемогущая функция для работы с куками.
Вы сами написали:
создавать крекер не можно просто присвоив значение
О каком времени может тут вообще идти речь?

Цитата:
3. Насколько я понял функция setcookie() отправляет заголовки, что не даст возможность потом использовать функцию header(), как избежать подобного (опять же вопрос о присвоении элементу массива)?


А вы пробовали выполнить setcookie и header подряд ? Тогда попробуйте.
Причём тут массив и заголовки??


Дальше я ваше сообщение не читал потому что прочитал сообщение Волка
на мой взгляд описывающее универсальный принцип работы авторизации.


-----
Truly yours, Sasha.
 
My status
 Top
Волк
Отправлено: 31 Января, 2008 - 18:58:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




valenok пишет:
прочитал сообщение Волка
на мой взгляд описывающее универсальный принцип работы авторизации.

До этого алгоритма я сам дошел, долгим и тернистым путем проб и ошибок Улыбка


-----
Таран - оружие героев!
 
 Top
valenok Модератор
Отправлено: 31 Января, 2008 - 19:07:34
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А мне повезло больше. Я статью читал внимательно =)


-----
Truly yours, Sasha.
 
My status
 Top
Dastar
Отправлено: 31 Января, 2008 - 19:38:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




valenok пишет:
ов по поводу использования

Везееет(с)КВН Радость
А я тоже доходил сам, так как из-за спецефических настроек файла php.ini топ сервера и моего хостинга долго не мог вообще с сессиями разобраться)


-----
Не знаешь - молчи.
 
 Top
Волк
Отправлено: 31 Января, 2008 - 20:35:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




Учится можно общаясь с умными людьми, читая книги и на своем опыте. При этом свой опыт усваивался лучше всего (особенно негативный опыт).


-----
Таран - оружие героев!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB