Вот собираюсь делать так, прошу попровлять и дополнять: 1. сбор всех имен переменных передоваемых GET/POST со всех php сценаривем 1.1 создание хеша имя_переменной/файл 2. сбор всех ф-ций которые фильтруют переменный используя addslashes magic_quotes_gpc str_replace 2.1 создание хеша имя_ф-ции/файл 3. сбор всех строк вида mysql_query($perm), где потом содержание $perm интерпалируем в значение хеша, а ключ хеша будет имя этой переменной. Далее сравниваем, если строка запроса (п.3) к БД содержит переменную (п.1) , делаем проверку на наличия имени ф-ции (п.2), если она не обнаружена - значит код потанцеально уязвим. На сколька этот алгоритм эффективен - я хз. помогайте господа.
Нужно собирать переменные, значения которых используются в запросах к БД, хотя п1 почти этому удовлетворяет. Вот насчет п2 -- ты на чем пишешь? Т.е magic_quotes_gpc - это директива, а не ф-я, значение(on\off) можно получить посредством get_magic_quotes_gpc() но это опять же в php.
А почему бы не собирать запросы к БД содержащие строки $_get[], $_post[], $_cookie[] ? Это будет означать, что скрипт наверняка уязвим
Зачем получать значение magic_quotes_gpc ? И, главное откуда его получать? Заранее ведь не известно, будет ли анализируемый скрипт работать с значением magic_quotes_gpc = 1 или 0. Просто нужно чтоб в отчете прога (скрипт?) выводила, что существует вероятность SQL-inj в случае magic_quotes_gpc=0.. И еще: не надо забывать про cookies..
r0cha! я делаю проверку по регеспу на ф-цию такога рода. Но смори не все же переменные которые есть в теле запроса доступны через GET/POST, поетому я проверяю сWEBдоступные переменные на наличая в БДзапросе. PHP: function un($code){ if (get_magic_quotes_gpc()) { $code = stripslashes($code); } return $code; } EXSlim хм, такога проста почти не встречал, ну если такое есть то этот момент тоже включу. С кукисами чуть поже, хотяб это автоматизировать. ps: что еще господа? ps2: пишу на PERL, http://forum.antichat.ru/thread26051-nJin4.html
EXSlim гуд, уже включил., а регистр соблюдается? в $_get[], $_post[], $_cookie[] ??? Все согласны с этим алгоритмом?
когда руками баги ищу то просто... есть запрос к бд... select Name,pass from users where '.$id.' Вот те и иньекция... тоесть есть в строке есть нефильтруймый передаваемый параметр то это бага... как это реализовать в сканере я хз... еще добавь include()
ну еще можно исключать переменные которые фильтруются прегматчем например... и проверять на наличие !isset'а