| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Авторизация |
| Автор: Gold Dragon 28.9.2006, 06:56 | ||||
| Прошу вас оценить надёжность данного способа авторизации. И укажите возможные способы взлома. И желательно всё таки обойтись без общих фраз, а указать на конкретику. страница с формой для ввода логина и пароля
сраница администрирования куда осуществляется переход
|
| Автор: ZlojEzh 28.9.2006, 09:12 |
| используй вместо кукисов сессии иначе злобный хацкер может похитить кукисы у пользователя, установить их себе и поставить неограниченное время жизни. время жизни сессии ты по крайнер мере контролируешь сам: посему похищение идентификатора сессии даст хакеру намного меньше. а если добавить еще скытую проверку версий браузера и ос, то все вообще будет отлично |
| Автор: Garret 28.9.2006, 09:22 |
| Зачем логин хранить захэшеным? Тут у тебя sql-inj на лицо. |
| Автор: -=Ustas=- 28.9.2006, 09:24 | ||||
Gold Dragon, единственное, что мне пришло в голову, так это то, что после авторизации я могу провести тебе SQL-инъекцию, т.е. тут:
Не забываем эскейпить входные данные! Добавлено @ 09:25 И еще:
Ничего не напутал |
| Автор: Gold Dragon 28.9.2006, 16:31 |
| ZlojEzh, не люблю я что-то сессии А фиг его знает это как? поясни то есть? PS -=Ustas=-, да, действительно в одном месте лажа |
| Автор: -=Ustas=- 28.9.2006, 18:43 |
Да как, открываем файл куков, и дописываем туды sql-запрос, через ' |
| Автор: sOckets 28.9.2006, 19:39 |
| Я всегда говорю что нельзя доверять юзерам , ты должен проверять всё что они отправляют. И потом зачем ты отдельно ставишь в куки : логин , пароль , id и тд , помоему "лутше" будет использовать 2 элемента куки , это ID и md5(login+pass) потом когда нужно проверить куки , ты берёшь ID и зашированный login и pass и сверяешь с теми же зашифрованными login и пассом.. Ещё раз говорю , парсь всё что вводит юзер ($_GET,$_POST,Cookie,ну и всякие системные переменные типо браузера и тд (если ты их юзаешь))... |
| Автор: Gold Dragon 28.9.2006, 21:52 |
| -=Ustas=-, если честно, то не понимаю sOckets, я всё полностью проверяю что вводит юзер |
| Автор: Vaulter 28.9.2006, 22:23 | ||
Gold Dragon,
пароль не храни в куке!!!! |
| Автор: Gold Dragon 29.9.2006, 06:54 |
| Наконец-то я понял что такое SQL-инъекция но кстати, это хорошо говорить, когда структуру кода знаешь, а так замучаешься делать Да хватит тебе... Да если уж на это пошло, то пароль можно подглядеть или подслущать |
| Автор: sOckets 29.9.2006, 08:13 | ||
Gold Dragon, тогда можно уверенно говорить что абсолютную защиту к сайту написать не возможно , поэтому можно и без пароля пускать в cpanel сайта , всё равно пароль подлядеть можно
Например в куках ID пишем (Опера просто создана для работы с куками ;)) наш ID и SQL Запрос , например 99+or+1=1/* , и если авторизация нормально прошла то можно сказать что SQL иньекция есть , затем просто делаем запросы...ну это вопрос времени , да я ещё и не проснулся с утра |
| Автор: Kefir 29.9.2006, 08:28 |
| Gold Dragon, короче http://wiki.vingrad.ru/PHP:mysql_real_escape_stringтебе в помощь! |
| Автор: G0rinich 29.9.2006, 10:19 | ||||||||||||
5 символов расшифровываются хорошей программой секунд за 10, на 6 символов уходит до 15 минут, так что не проблема ))) В моем варианте так. Пользователю при авторизации выделяется уникальный идентификатор, при каждой авторизации он разный. В куке хранится только он. Т.е. при всем желании по куке ничего не узнаешь. Не активная сессия удаляется через 15 минут, или блокируется, если пользователь выбрал опцию "запомнить меня". Таким образом если вы зайдете с другого компьютера, то будет заведена новая сессия и ваша старая кука автоматически станет не действительной. функция login
Процедура авторизации (выполняется при каждой загрузке)
Модуль управления сессиями
функция ChrRandomStr()
Ну и на всякий случай защищаемся от врагов )))
|
| Автор: Gold Dragon 29.9.2006, 11:37 |
| народ, спасибо за свои варианты, но мне хотелось узнать уязвимость своего в общем, из всего сказанного я понял, что нужно проверять ещё дополнительно входящие данные... я это делаю, но про mysql_real_escape_string не знал, спасибо... На сессиях пока не хочу делать.. так как свободный доступ к компьютеру не очень реально получить по крайней мере в течение 10-15 минут после выхода человека, а куки удаляться через 5 минут. Это просто такие условия в данной ситуации Добавлено @ 11:46 G0rinich, извини, но я что-то не пойму никак где основное поле, когда всё верно? ЗЫ наверное пятница сказывается |
| Автор: sOckets 29.9.2006, 12:27 |
| Скорее всего |
| Автор: Vaulter 29.9.2006, 13:22 |
| Gold Dragon, дело не в подборе дело в перехвате куков. если в куках хранится пароль и id - то перехват приведет к тому что стороний человек получит доступ до смены пароля. если в куках хранится сессия и id - то перехват приведет к тому, что у стороний человек получит доступ на время жизни сессии. |
| Автор: Garret 29.9.2006, 13:38 |
| 6 символьный пароль подбереться за пару часов на сильной машине. Если нужно запоминать пользователя, то можно хранить и в куках. |
| Автор: Gold Dragon 29.9.2006, 18:42 | ||
тогда вопрос.. Как мне в моём коде использовать сессии? То есть что и где поменять? |
| Автор: Garret 29.9.2006, 18:44 |
| Что значит убедил? А если пользователь не хочет вводить каждый раз данные? |
| Автор: Gold Dragon 29.9.2006, 19:22 |
| что значет не хочет... не уже ли трудно ввести логин и пароль? На mail.ru заходят, вводят и ничего страшного Добавлено @ 19:25 ну так как предусмотреть сессии? |
| Автор: SamDark 3.10.2006, 13:21 |
| Сессию тоже можно перехватить. Даже если это произошло, можно защититься: запомнить при входе ip и сверять его в процессе работы скрипта. |
| Автор: Gold Dragon 16.10.2006, 12:39 |
| народ, помогите разобраться с логикой. Пытаюсь в этот скрипт засунуть работу с сессиями, но не получается. Допустим юзер ввёл пароль и логин. Данные ушли на обработку. Сверились с данными в базе - всё в порядке. До этого я просто записывал в куки пароль и логин с маленькой жизнью. А как мне работать с Сессиями? Т.е. в место того, чтобы записывать в куки пароль, я должен стартовать сессию и записать значение session_id и потом всегда её проверять, так? по моему что то я не то делаю |
| Автор: -=Ustas=- 16.10.2006, 13:03 |
| Ну в сессию нужно писать ID и логин пользователя например, и в функции проверки авторизации при каждом переходе пробивать их достоверность. Если хочешь, чтоб был типа автовход, то в куку также можно писать ID и логин. ЗЫ. Что то не могу уловить твою проблему. |
| Автор: Gold Dragon 16.10.2006, 14:32 | ||||
| да проблемы нет... просто народ сказал что хранить в куках пароль не очень надёжно.. Вот я подумал-подумал и решил чуть переделать код вот что получилось, но чувствую что навертел что-то сложно и не правильно, посмотрите плизз страница с формой
страница администрирования, куда осуществляется переход
|
| Автор: Gold Dragon 18.10.2006, 18:32 |
| ау... |
| Автор: -=Ustas=- 19.10.2006, 09:24 |
| Gold Dragon, опять жишь, где mysql_escape_stirng() ?! И еще, у тебя тут судя по всему автовхода нет, я правильно понял?! |
| Автор: Gold Dragon 20.10.2006, 09:15 |
| про mysql_escape_stirng() забыл Автовхода не будет.. А как насчет кода? Что-то по моему не то... Посмотрите пожалуйста. |
| Автор: -=Ustas=- 20.10.2006, 16:30 |
| Gold Dragon, впринципе то все ништяк, только мне вот не понятно одно, зачем хеш от паса хранить в сессии, а остальные данные в куках. Поясни причину такого разделения, ИМХО, я бы все держал в сессиях, зачем пользователю видеть лишнюю информацию (об авторизации) у себя на тачке?! Но это ИМХО, а так... придраться вроде не к чему ;) |
| Автор: BrutalizedProgrammer 25.11.2006, 19:35 | ||
а как он их похитит?... (это не сарказм, мне реально интересно... как? Я просто сам тут ставил в куки пароль а вот теперь наткнулся на эту тему и очень заинтересовался... |
| Автор: skifoz 25.11.2006, 19:38 |
| Уметь надо) XSS решает |
| Автор: BrutalizedProgrammer 27.11.2006, 15:38 | ||||
Народ, извините за нубский вопрос что означает знак "?" и знак ":" в этом выражении?... |
| Автор: Gold Dragon 27.11.2006, 17:49 | ||||
это тоже самое что и
|
| Автор: GZep 27.11.2006, 18:07 |
Нет, решает addslashes();. Ха-ха. Кто вообще придумал этот укороченный вариант записи условий? Вообще он какой-то не такой... |
| Автор: BrutalizedProgrammer 27.11.2006, 18:11 |
| ааа типо тернарный оператор? (или тренарный... хз как то так |
| Автор: Gold Dragon 28.11.2006, 11:52 |
это дело вкуса, но мне очень нравится |
| Автор: BASILIO 23.8.2008, 06:27 | ||
Вопрос, вот тоже сейчас все дырки залатываю, и задумался о куках, в принцепе их не так много, и больше меня интересует кука с ИД сессией, может ли недоброжелатель изменив значение, как-нибудь напакостить? |
| Автор: Ockonal 23.8.2008, 07:07 |
| Можно |
| Автор: Feldmarschall 23.8.2008, 09:14 |
| Ockonal, ну какой смысл писать в тему, которой два года? Ладно этот бедолага - его собственные темы закрывают за глупость и хамство - он по чужим шарахается. А ты-то чего? Тему инъекции через куки давно в этом топике обсосали. Только о ней речь и шла. Всё решили. Зачем повторяться? Зачем вообще размышлять - через что инъекции существуют, а через что - не существуют? Какая разница? Синтаксис надо соблюдать. Тогда и инъекций не будет. Данные, подставляемые в запрос, должны быть соответствующим образом обработаны. Точка. Откуда они поступили - неважно. Вы все думаете, почему-то, ОТКУДА поступили данные. А думать надо - КУДА. К тому же, вопрос этого бедолаги похоже, не про инъекции, а про другое. Но тут замечательно подойдет первая строчка из твоей подписи. |
| Автор: BASILIO 23.8.2008, 09:40 |
| Ockonal, ну про кукисные инъекции я знаю, вопрос в другом, в ИД сессии, её я сам как бы не где не использую, по этому и не знаю, можно ли вообще её как-нибудь так написать, чтоб напакостить? |
| Автор: lukas 23.8.2008, 10:11 |
| Мне кажется достаточно поставить проверку по IP и все проблемы решаться... Даже если кто нибудь и получит куки, IP совпадать не будет, ну естественно IP не нужно записывать в КУку, а например куданибудь в базу данных или даже в файл... |
| Автор: BASILIO 23.8.2008, 10:28 |
| lukas, ИП... есть у нас тута один сайт, там так делают... если чесно, очень сильно бесит... я вот думаю по данным каким-нибудь клиентским... |
| Автор: DioNiR 23.8.2008, 11:01 |
| есть такие провайдеры где ип меняется, Ни по каким данным ты не проверишь. Все данные приходящие от клиента можно подменить. Поэтому и есть куки, в них храниться основная инфа об авторизации. Чтобы не логиниться по сто раз. |
| Автор: Ockonal 23.8.2008, 12:09 |
| Feldmarschall, Я, конечно, извиняюсь, но зачем сразу такая реакция? У меня эта тема была в rss, я и перешел... Знаю, виновен, я не читал тему с самого начала - исправлюсь. p.s. сорри за оффтоп. |