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 :: Проверка на "взломность"

 PHP.SU

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


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

> Без описания
Itan
Отправлено: 26 Октября, 2011 - 11:40:22
Post Id


Частый гость


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


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




Здравствуйте! Я написал скрипт авторизации, который проверяет логин и пароль по базе.\

Но я новичок в этом деле и хотелось бы как-то (где-то) проверить скрипт, так сказать, на "взломность". Подскажите, пожалуйста, к кому можно обратиться? Или может есть желающие потестить?
 
 Top
Stasnislav
Отправлено: 26 Октября, 2011 - 11:42:15
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Апр. 2011  


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




Itan пишет:
к кому можно обратиться?



к хакерам )


-----
Программисты на работе общаются двумя фразами: «непонятно» и «вроде работает».
 
 Top
OrmaJever Модератор
Отправлено: 26 Октября, 2011 - 12:02:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




если скрипт неочень большой выложите сюда и тыкнём пальцем на ошибки и поможем исправить


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Itan
Отправлено: 26 Октября, 2011 - 13:29:45
Post Id


Частый гость


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


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




Вот: [url]http://***[/url]
Посмотрите, пожалуйста, если время будет.

(Отредактировано автором: 27 Октября, 2011 - 13:20:03)

 
 Top
Мелкий Супермодератор
Отправлено: 26 Октября, 2011 - 13:52:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




SQL-инъекции пропущены. htmlspecialchars по-умолчанию не преобразовывает одинарный кавычки.

Просто на правах критики:
check_base_query - имя функции совершенно не совпадает с действием. В имени - проверка, а делается логирование.


-----
PostgreSQL DBA
 
 Top
Itan
Отправлено: 26 Октября, 2011 - 18:00:09
Post Id


Частый гость


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


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




Мелкий пишет:
SQL-инъекции пропущены. htmlspecialchars по-умолчанию не преобразовывает одинарный кавычки.


А magic_quot экранирует их ведь - это спасает от инъекций?

P.S. а как вам алгоритм подбора соли для пароля по логину?
(Добавление)
Ну а в целом как, нормально?
 
 Top
Мелкий Супермодератор
Отправлено: 26 Октября, 2011 - 18:52:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Itan пишет:
А magic_quot экранирует их ведь - это спасает от инъекций?

Магический кавычки - устаревшие с PHP5.3, а в PHP5.4, на сколько помню, будут удалены.

Itan пишет:
а как вам алгоритм подбора соли для пароля по логину?

Я не понял, чего там происходит, в этой функции Радость А сама идея - имеет место на существование, даже при украденной базе хэшей и логинов перебирать придётся брутфорсом каждый логин.

Itan пишет:
Ну а в целом как, нормально?

Пора вам в сторону ООП двигаться - функции, объявленные в функциях - не есть хорошо.
А в целом, я ожидал худшее.


-----
PostgreSQL DBA
 
 Top
Stierus Супермодератор
Отправлено: 26 Октября, 2011 - 20:32:09
Post Id



Рекордсмен по количеству сообщений за 7 дней


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


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




PHP:
скопировать код в буфер обмена
  1. $row = base_query("SELECT login_string FROM isse_logins WHERE id = '".$_COOKIE['id']."'");


Чистый injection, пролистал мельком, наверняка, есть еще
 
My status
 Top
Itan
Отправлено: 26 Октября, 2011 - 20:59:31
Post Id


Частый гость


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


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




Йопта.. Блин, нифига я просмотрел)) Этож куки. Блин, спасибо)

(Отредактировано автором: 26 Октября, 2011 - 21:01:33)

 
 Top
White
Отправлено: 26 Октября, 2011 - 21:03:15
Post Id



Частый посетитель


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


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




Itan кука - не сессия, она хранится на клиентском компьютере, а все что идет на сервер от клиента подделать можно.


-----
if(time()>1356048000) die();
 
 Top
Itan
Отправлено: 26 Октября, 2011 - 21:15:36
Post Id


Частый гость


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


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




Да я знаю, я просто ошибся сначала.

Там не будет инъекции, как сказал Stierus, потому что перед запросом в БД идет проверка:

PHP:
скопировать код в буфер обмена
  1. if (check_cookie()) { //Коннект к базе и сравниваем базу с куками
  2.         $row = base_query("SELECT login_string FROM isse_logins WHERE id = '".$_COOKIE['id']."'");


А функция check_cookie() проверяет куку: isset и is_numeric. Максимум, что можно сделать - подставить чужой id (тогда не совпадут id - hash) либо подставить десятичное число: 0.2 - но тоже будет ошибка потому что в базе такой записи нет - значит нет такого юзера, значит тоже выводится "Неверно" красными буквами.

Почему is_numeric? Потому что у меня is_int что-то не работает, как я предполагал.
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Октября, 2011 - 21:22:05
Post Id



Активный участник


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


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




PHP:
скопировать код в буфер обмена
  1. if ($_COOKIE['id']+0 > 0) // ...

Даже если там будет текст при сложении с нулем будет ноль.
Так одним действием мы и приведем к явному INT (не строка) и проверим на валид. Подмигивание
 
 Top
Itan
Отправлено: 26 Октября, 2011 - 21:24:51
Post Id


Частый гость


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


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




Я правильно понял, что ваш код заменяет вот это:

PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE['id']) and is_numeric($_COOKIE['id'])) return true;


?
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Октября, 2011 - 21:28:21
Post Id



Активный участник


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


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




Не совсем так.
Я просто хотел указать на иногда очень удобную особенность пхп.
Но если говорить о заменах то:
Itan пишет:
if (isset($_COOKIE['id']) and is_numeric($_COOKIE['id'])) return true;

Я бы заменил на:
PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE['id'])) return $_COOKIE['id']+0;

Вернет явное десятичное число.
И даже если и вернет ноль, то запрос в базу вернет пустой результат.
А вам его всеравно делать.
(Добавление)
Черт, что-то не совсем то я написал... Да ладно. Как вы это будете использовать - ваше дело. Радость
 
 Top
Itan
Отправлено: 26 Октября, 2011 - 21:30:20
Post Id


Частый гость


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


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




О, класс. Спасибо. Люблю, чтобы все коротко и понятно в исходниках было Улыбка
(Добавление)
Хотя нет, в моем случае не подойдет, потому что там, в условии, проверяется не только COOKIE['id'] но и COOKIE['control'] и результатом функции может быть либо 1 либо 0.

Но я ваш способ запомнил, обязательно его использую где-нибудь.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB