Вопрос по уязвимости PHP+MySql

Vlad_R

Новичок
Вопрос по уязвимости PHP+MySql

Приветствую всех!

У меня есть небольшой сайт. Не так давно неизвестный мне человек написал, что нашел уязвимость на моем сайте и привел ссылки вида:
page.php?id=-1+union+select+1,2,3,4,5+from+mysql.user/*
page.php?id=-1+union+select+1,2,3,4/*

Предложил помощь в её устранении.

При переходе по ссылкам вместо данных на странице из базы какая билеберда из цифр.

Скажите пожалуйста с чем связана уязвимость моего сайта (если она вообще имеет место быть)? Т.е. что этот человек сможет сделать с сайтом и с базой MySQl? Становится ли база ему доступной? И как ее можно устранить (если уязвимость все-таки есть)?

Заранее огромное спасибо за ваши советы.
 

Vlad_R

Новичок
Большое спасибо.
Mr_Max
Если используется только id в GET достаточно будет
PHP:
$id=(int)$id;
?

Да и все-таки, насколько страшна данная уязвимость? Т.е. что сможет сделать "злоумышленник", воспользовавшись ей?
 

Alexandre

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

zerkms

TDD infected
Команда форума
Alexandre
бред. нулевая новость - такая же несуществующая новость, как и например 4173126381-ая.
 

Vlad_R

Новичок
В общем сделал как описано в статье.

Цифровые параметры обрабатываем:
PHP:
if((string)$id<>(string)(int)$id) {
die('ERROR');
}
Текстовые вот этим:
PHP:
$str = mysql_escape_string($str);
У меня еще такой вопрос. А обязательно проверять и параметр номер страницы при листинге выдачи по страницам? Сам попытался сделать sql инъекцию через номер страницы. Ничего не получилось, осталось все как есть.

-~{}~ 04.07.08 19:37:

Да, я так понимаю в методе POST тоже присутствует уязвимость к SQL Injection? Там тоже параметры "защищаем"?
 

Gas

может по одной?
Vlad_R
и какое сообщение ты собираешься вывести в этом случае?
то совет для параноиков.

-~{}~ 04.07.08 19:34:

в методе POST тоже присутствует уязвимость к SQL Injection
в методе POST никаких уязвимостей не присутствует, они присутствуют в кривом коде. Смысл защиты от подобных "атак" - правильно составлять sql запрос, используя несколько примитивных операций, никакой магии.
 

WP

^_^
А вы в курсе что
PHP:
$var = '123жили у бабуси два веселых гуся';
$var = (int) $var;
echo $var; // 123
Зачем позволять такое?
 

Gas

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