Ребята. Подскажите пожалуйста. Вот в файле есть дыра, если в stat.php?=-1 то mysql_fetch_row():. Короче можно sql инжекцию потом сделать. чТО НУжно добавить в файл stat.php, чтобы при ошибочном запросе к sql выходило сообщения что нет такой статьи. Заранее спаисбо.
не катит совсем. выходит сообщение нот фаунд и все равно Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /xxxxx/mainfile.php on line 526 Может сорс всего файла стат написать. чтобы понятнее было.
так тут человеку защититься нужно как я понял. если только с '-' прокатывает то это не дыра. лучше сделай сразу $id=intval($id>=0?$id:0);
вообще если нужно обезопаситься, то достаточно PHP: $query=mysql_query("SELECT 1 FROM table WHERE id='".addslashes($id)."' LIMIT 1"); if(mysql_num_rows($query)){ ...
не у меня так не толкьо с - прокатывает. там если просто, статьи скажем не существует с id=122, то будет еррор вылазить.
2 ZaCo а какая разница? мой опыт мне подсказывает что любые передаваемые пользователем данные нужно ОБЯЗАТЕЛЬНО слешировать и обособлять ковычками. 2 Аннет Это не правильный выход в данной ситуации. Даже если не будет сообщения о ошибке, обнаружить sql-inj реально 2 temon смотри мой пример, после запроса делаешь PHP: if(mysql_num_rows($query)){ и только потом уже все остальное
2Trinux не еслиобособлять то ясное дело. но не зря же придумали типы int? и where все-таки по-быстрее сработает при поиске числа нежели строки...
я сделал вот так if(!mysql_num_rows($result)){ include ("404.php"); }else{ и все пашет прекрасно. когда нету статьи с каким то айдишником то вылазит страница 404. НО. Если сделать следующий запрос: id=' то вылазит опять страница 404 но Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\phpbbproverka.nefig.ru\www\sing\stat.php on line 18 Что делать?
Code: if(@!mysql_num_rows($result)){ include ("404.php"); }else{ 2 раз говорю, не называй меня Аннет Конечно есть, но стимула никакого нет, да и кто знает что у него там и как а на $id поставь вот так Code: if (gettype($id) !== "integer" || $id<0) { include ("404.php"); }
2 Аннэт А мне нравится =))) красивое имя. 2 temon Сам запрос построй следующим образом: PHP: $query=mysql_query("SELECT bla FROM bla WHERE id='".addslashes($id)."' LIMIT 1"); Если id поле обозначено как NULL - убрать к фигам.
Какой блин include?? Нафиг он там? У тебя ошибка вылазит с твоим инклудом.. header("Location: $page");