![]() |
помогите с php
Ребята.
Подскажите пожалуйста. Вот в файле есть дыра, если в stat.php?=-1 то mysql_fetch_row():. Короче можно sql инжекцию потом сделать. чТО НУжно добавить в файл stat.php, чтобы при ошибочном запросе к sql выходило сообщения что нет такой статьи. Заранее спаисбо. |
if (!mysql_num_rows($result)){
print 'Not found'; }else{ print 'OK'; } |
большое спасибо.
проверю, если работает то огромное спасибо. |
не катит совсем.
выходит сообщение нот фаунд и все равно Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /xxxxx/mainfile.php on line 526 Может сорс всего файла стат написать. чтобы понятнее было. |
у тебя mysql_query запрос ошибочный. mysql_error()ом проверь
|
я в php не гуру.
каким образом проверить? |
после mysql_query(); ставишь echo mysql_error(); или mysql_query() or die(mysql_error());
|
так тут человеку защититься нужно как я понял. если только с '-' прокатывает то это не дыра. лучше сделай сразу $id=intval($id>=0?$id:0);
|
вообще если нужно обезопаситься, то достаточно
PHP код:
|
только он число передает ;)
|
А можешь просто @ поставить, чтобы вообще ничего не выдавало (:
|
не у меня так не толкьо с - прокатывает. там если просто, статьи скажем не существует с id=122, то будет еррор вылазить.
|
2 ZaCo
а какая разница? мой опыт мне подсказывает что любые передаваемые пользователем данные нужно ОБЯЗАТЕЛЬНО слешировать и обособлять ковычками. 2 Аннет Это не правильный выход в данной ситуации. Даже если не будет сообщения о ошибке, обнаружить sql-inj реально 2 temon смотри мой пример, после запроса делаешь PHP код:
|
большое спасибо.
|
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 Что делать? |
Код:
if(@!mysql_num_rows($result)){Конечно есть, но стимула никакого нет, да и кто знает что у него там и как а на $id поставь вот так Код:
if (gettype($id) !== "integer" || $id<0) { include ("404.php"); } |
2 Аннэт
А мне нравится =))) красивое имя. 2 temon Сам запрос построй следующим образом: PHP код:
|
Какой блин include?? Нафиг он там? У тебя ошибка вылазит с твоим инклудом.. header("Location: $page");
|
| Время: 19:58 |