|
|
|
| Вот решил построить сайт с системой авторизации.
Схема работы: На главной странице имеются поля для ввода пароля, логина и кнопка входа. При нажатии на кнопку парольи логин сверяются с паролем и логином из базы данных, если всё правильно, то запускается сессия, регистрируется переменная $_SESSION['aut'] и этой переменной присваивается, допустим, значение "true". После окончания работы скрипта производится переадресация через header("Location: ...") на определённую страницу. Как всем известно, при этом переменная $_SESSION['aut'] будет всегда пока не закроют браузер или через специальный скрипт не диактивируют или не сменят значение. При прогулке по сайту на каждой странице производится проверка вышесказанной переменной:
if (empty($_SESSION['aut']) or $_SESSION['aut'] !=='true'){header("location: error.php"); exit();}
Если нет переменной Aut или её значение иное от "true", то происходит переадресация на страницу error.php, которая в свою очередь оповещает о том , что требуется пройти авторизацию.
Или вместо переменной aut зарегистрировать и использовать 2 переменных, одному из которых присваивается значение из поля "пароль", а другой переменной соответсятвенно из поля "логин", и при посещении каждой страницы сверять значения данных переменных с данными из БД ???
А может я не прав и мыслю не как надо? Посоветуйте пожалуйста | |
|
|
|
|
|
|
|
для: KIM
(09.09.2006 в 22:47)
| | Да нормально мыслиш, проверку проходит один раз тогда и регестрируеш переменную сеанса.Зачем базу нагружать. Регестрируеш сессию и потом с ней уже работаеш. | |
|
|
|
|
|
|
|
для: KIM
(09.09.2006 в 22:47)
| | Да, но как после этого идентифицировать пользователя? У всех будет aut=1, а что это за пользователь выяснить не удастся.
Пароль хранить в сессии определенно не стоит, а имя можно. Лучше даже в зашифрованном виде (симметричное шифрование) | |
|
|
|
|
|
|
|
для: kasmanaft
(09.09.2006 в 23:38)
| |
Пароль хранить в сессии определенно не стоит,
|
А почему? | |
|
|
|
|
|
|
|
для: babilonian
(10.09.2006 в 00:10)
| | Да мало ли... такие вещи лучше нигде не хранить (разве что в базе данных, и то в необратимо зашифрованном виде) | |
|
|
|
|
|
|
|
для: KIM
(09.09.2006 в 22:47)
| | Не напряшайте парня. Послушай моего совета а пароль хранить не нужно в сессии сохраняеш только логин.И все. | |
|
|
|
|
|
|
|
для: programmer_2006
(10.09.2006 в 12:02)
| | Извините, а я что сказал? ;)
В открытом виде если хранить имя, то любой желающий может стать админом (если его ник знать :) )
Конечно, если имя в сессии нужно не только для " Здравствуйте, $login! Как давно вы к нам не заходили ... " | |
|
|
|
|
|
|
|
для: KIM
(09.09.2006 в 22:47)
| | Совсем запутался =).
Мне система авторизации нужна для форума, чтобы пользователи авторизовались.
Вот допустим чел авториизовался удачно и система зарегистрировала переменные $_SESSION['aut'] и $_SESSION['login'], но можно вместо этого просто зарегистрировать переменную $_SESSION['login'] и таскаться с ней по фсему форуму (значение данной переменной Логин пользователя).
Как злоумышленник сможет взломать такую систему? | |
|
|
|
|
|
|
|
для: KIM
(11.09.2006 в 08:50)
| | Только если украдёт SID сессии. | |
|
|
|
|
|
|
|
для: KIM
(11.09.2006 в 08:50)
| | Все правильно $_SESSION['login'] только эту переменную и рег.Как взломать да не как только ломаю сервак а это уже отдельныйвопрос.
А от кражи SID сессии есть вариант проверки айпишника. | |
|
|
|
|
|
|
|
для: programmer_2006
(11.09.2006 в 19:19)
| | А как SID украсть? Подобрать его практически нереально. А украсть? | |
|
|
|
|
|
|
|
для: KIM
(13.09.2006 в 22:14)
| | Народ!
Реально вообще без SESSION обойтись безопасно?Я к примеру авторизацию делаю только по куки. | |
|
|
|
|
|
|
|
для: KIM
(13.09.2006 в 22:14)
| | SID хранится в cookie или в GET-параметре, GET-параметр может попасть в поисковик - берут от туда, из cookie SID крадётся XSS-атакой. | |
|
|
|
|
|
|
|
для: cheops
(14.09.2006 в 19:31)
| | А если в SESSION хешированный идентификатор сессии передавать, который по таймауту закрывается? Такой вариант на мой взгляд безопаснее будет. Что скажете, Хеопс? | |
|
|
|
|
|
|
|
для: babilonian
(16.09.2006 в 00:07)
| | Скажу, что правы... ещё можно полностью реализовать собственный движок сессий http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5253, в этом случае можно очень гибко работать с сессиями, например, закрывать их после того, как от пользователя нет активности в течении 20 минут. | |
|
|
|
|
|
|
|
для: KIM
(13.09.2006 в 22:14)
| | А как SID украсть? Подобрать его практически нереально.
Смотря какой SID.
А если в SESSION хешированный идентификатор сессии передавать, который по таймауту закрывается?
Что? :))
GET-параметр может попасть в поисковик
Это еще каким образом? :) Туда может попасть только SID бота-поисковика ведь.
И хранить только логин в файле сессии - не нужно совсем. Зачем? Пароль светить не надо, а если админ захочет изменить пароль, то пользователь ничего не почувствует. | |
|
|
|
|
|
|
|
для: Unkind™
(16.09.2006 в 00:18)
| | >Это еще каким образом? :)
Тоже всегда безумно интересовало как они туда попадют... сейчас тему не найду, но есть реальные случае - заказывает человек что-то, а его заказ потом висит в yandex.ru, даже SQL-инъекции в поисковики попадают, не то что SID... По идее такие ссылки никак не должны попадать в резульататы поиска, но попадают... вероятно это работа баннеров поисковых систем, которые считают статистику, а заодно подкармливают ссылками роботов. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2006 в 01:11)
| | Да ахринеть можно... а как тогда от этого защититься?
Как предотвратить попадание SID в поисковик? | |
|
|
|
|
|
|
|
для: tAleks
(16.09.2006 в 02:50)
| | Нужно, чтобы к моменту попадания, он переставал быть действительными - т.е. завершать сессию. | |
|
|
|
|
|
|
|
для: KIM
(09.09.2006 в 22:47)
| | Зачем мучатся со всякими поисковиками и тд и тп. Всё наверно проще если при регистрации переменной сессии с Логином зарегистрировать переменную с ip, и при работе пользователя со страницей сравнивать ИП. Вот и всё! Или это ошибка? | |
|
|
|