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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос безопасности при авторизации 
:(
    Опции темы
yngwie19
Дата 4.2.2010, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте, у меня вот какой вопрос. На своем сайте Я пытаюсь реализовать систему регистрации пользователей по которой у меня есть несколько вопросов касающихся безопасности. Я использую такую систему:
1) на главной странице index.php в самом начале Я запускаю session_start()
2) далее проверяю следующее:
Код

if(!isset($_POST['enter']))
            {
                echo "<form method='post' action=$_SERVER[SCRIPT_NAME]>
                        Логин:<input class='input' name='user' type='text'><br>
                        Пароль:<input class='input 'name='password' type='password'><br>
                        <input name='enter' type='submit' value='Войти'/>
                    </form>";
            }
else
      {
               // Здесь проверяю веденные пользователем данные
               $db=mysql_connect('host', login', 'password');
           mysql_select_db('db_name', $db);

               $res=mysql_query("SELECT * FROM users WHERE login='".$_POST['login']."'AND pass='".$_POST['pass']."'", $db);
           if(mysql_num_rows($res)!=1)//такого пользователя нет
         exit("Введены не верные логин или пароль");
               else{    //пользователь найден
        $_SESSION['login']=$_POST['login'];    //устанавливаем login & pass
        $_SESSION['pass']=$_POST['pass'];
              }


mysql_close();
       }


Подскажите есть ли в моем примере дыры с помощью которых хакер сможет взломать его. И вообще целесообразно ли использовать в работе сессии или их тоже можно легко обойти. Буду признателен за любую помощь!

Это сообщение отредактировал(а) yngwie19 - 4.2.2010, 18:19
PM MAIL   Вверх
Ипатьев
Дата 4.2.2010, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



как минимум, SQL инъекция
PM MAIL   Вверх
nerezus
Дата 4.2.2010, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



1) SQL-inj. У специалиста их не может быть впринципе. Стремись.
2) Не в том месте подключается СУБД.
3) Сессии хранятся на сервере.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
yngwie19
Дата 4.2.2010, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(nerezus @  4.2.2010,  03:06 Найти цитируемый пост)
2) Не в том месте подключается СУБД.

подскажите пожалуйста где нужно соединяться с базой?

Цитата(nerezus @  4.2.2010,  03:06 Найти цитируемый пост)
3) Сессии хранятся на сервере. 

т.е мне нужно самому генерить хеш сессии и хранить в БД? а чем вариант session_start() не подходит? 
PM MAIL   Вверх
MoLeX
Дата 4.2.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



пароль в md5()
логин пропускаем через mysql_real_escape_string

Добавлено через 21 секунду
в запросе лучше указать LIMIT 1

Добавлено через 53 секунды
с СУБД надо подключаться в самом начале


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 4.2.2010, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



по поводу места подключения к бд я не понял. 
про сессии на сервере - это, как я понимаю, был туманный ответ на вопрос "можно ли обойти сессии". 
вопрос, впрочем, не менее туманный, и звучит как "можно ли обойти трамвай". 
что значит - "обойти"? что значит "тоже"? теоретически обойти можно все что угодно. 
что значит "можно обойти" - синоним "никто не использует сессии для авторизации"? а сами как думаете?

по поводу кода
1. большая просьба исправить синтаксис. смотреть на подсветку невозможно.
2. нет собственно работы с сессией. для чего в нее записываются логин и пароль?
PM MAIL   Вверх
yngwie19
Дата 4.2.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нашел пример регистрации от Mal Halk http://forum.vingrad.ru/faq/topic-158301.html
посмотрите пожалуйста, есть ли у Вас замечания? это действительно безопасный подход или его следует усложнить (ну кроме пункта 8. где он сам объясняет как можно улучшить). Большое спасибо!
PM MAIL   Вверх
Ипатьев
Дата 4.2.2010, 19:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



код нужно не усложнять, а понимать
PM MAIL   Вверх
yngwie19
Дата 4.2.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ипатьев, Я имею в виду улучшить защиту. Ну а вообще подход правильный?
PM MAIL   Вверх
nginx
Дата 4.2.2010, 20:05 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MoLeX @  4.2.2010,  10:04 Найти цитируемый пост)
пароль в md5()

ЩИТО? Геноцид SHA1()  smile ?

Цитата(MoLeX @  4.2.2010,  10:04 Найти цитируемый пост)
в запросе лучше указать LIMIT 1

зачем? у него, как будто, результат другой будет?

Цитата(yngwie19 @  4.2.2010,  19:45 Найти цитируемый пост)
Ипатьев, Я имею в виду улучшить защиту. Ну а вообще подход правильный? 

нет, у тебя совершенно безграмотный код

см. мою тему:
http://forum.vingrad.ru/topic-283105/view-all.html


PM MAIL   Вверх
Simpliest
Дата 4.2.2010, 20:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(nginx @  4.2.2010,  19:05 Найти цитируемый пост)
у тебя совершенно безграмотный код

см. мою тему:
http://forum.vingrad.ru/topic-283105/view-all.html

Бгг...
Во-первых, тема там не твоя.
Во-вторых, твой код в той теме от вышеприведеного отличается наличием mysql_real_escape_string в лучшую сторону, но при этом имеет абсолютно тупые проверки

Если был запрос такой
Код

WHERE login = '%s'", mysql_real_escape_string($_POST['login'])));

Код

elseif($res['login'] != $_POST['login'] 

Это еще зачем? Или это из серии 
Код

$flag = true;
if ($flag == true) // контрольный в голову

А в плане подхода код абсолютно одинаковый. Но самокритика это хорошо... Полезно знать что ты пишешь безграмотный код, есть куда расти.


--------------------
user posted image
PM   Вверх
yngwie19
Дата 4.2.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Simpliest, Подскажите пожалуйста не могли бы Вы дать ссылку на статью, где будет описан правильный(с точки зрения безопасности) подход к регистрации пользователей на сайте. А то в инете много разных подходов, а какой лучше выбрать и дальше не знаю.
PM MAIL   Вверх
nerezus
Дата 4.2.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Давай ты лучше будешь писать свой алгоритм общими словами, а мы ответим.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nginx
Дата 4.2.2010, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Simpliest @  4.2.2010,  20:34 Найти цитируемый пост)
Во-вторых, твой код в той теме от вышеприведеного отличается наличием mysql_real_escape_string в лучшую сторону, но при этом имеет абсолютно тупые проверки

пруф ор die();


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


Опытный
**


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

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



nerezus, Мне пока сложно описать последовательность реализации данной задачи. На текущий момент Я ищу в инете различные варианты и пытаюсь разобраться какой наиболее безопаснее. Посматрите пожалуйста вот эту ссылку http://www.itseazy.ru/post46
как Вы считаете можно ли создать безопасную регистрацию используя его. Большое спасибо!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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