Защита скрипта

PiratusXP

Новичок
Защита скрипта

Можно ли обойти как то эту защиту
PHP:
if(!ereg("^mod=Catalog&file=viewfile&lid=[0-9]+(&rel=[12])?$",$_SERVER['QUERY_STRING'])){
   header("Location: load.php?mod=Catalog");
}
foreach ($_POST as $var_name=>$var_value){
   if ($var_name != ""  OR $var_value != "")header("Location: index.php");
}
 

Фанат

oncle terrible
Команда форума
Я думаю, эта защита настолько гениальна, что любой хапер просто даже не станет ее ломать. от страха.
 

PiratusXP

Новичок
Фанат Ты это на полном серьезе?
PHP:
foreach ($_POST as $var_name=>$var_value){
   if ($var_name != ""  OR $var_value != "")header("Location: index.php");
}
А как в этой строке указать некоторые POST переменные которые нужно пропустить.
т.е. чтоб послав $_POST['names']
не срабатывла защита а на все остально срабатывала.
 

Djibo

Guest
объясните мне, дураку неграмотному, где здесь защита и от чего?
 

PiratusXP

Новичок
PHP:
if(!ereg("^mod=Catalog&file=viewfile&lid=[0-9]+(&rel=[12])?$",$_SERVER['QUERY_STRING'])){
   header("Location: load.php?mod=Catalog");
}
Это разрешает тока определенные запросы делать
т.е. напрмер load.php?mod=Catalog&file=viewfile&lid=2326&rel=1
load.php?mod=Catalog&file=viewfile&lid=28533
что-то типо этого не пройдет
load.php?mod=Catalog&file=viewfile&lid=28533&fix=goot
т.е. будет редирект на load.php?mod=Catalog
PHP:
foreach ($_POST as $var_name=>$var_value){
   if ($var_name != ""  OR $var_value != "")header("Location: index.php");
}
А это улавливает все POST данные и не поволяет выполниться скрипту
 

PiratusXP

Новичок
Ну как зачем? Чтоб не позволить вывести скрипт из строя, т.е. не передать ему ложные данные... Одним словом чтоб не взломать
 

Crazy

Developer
Совершенно клинический пионэр...

PiratusXP, друг мой милый, а не мог бы ты привести конкретный пример атаки, которая сработала бы без твоей защиты и не сработает в ее присутствии? Чиста канкретна.
 

neko

tеam neko
PiratusXP
вообще-то данные, сами по себе, никому вреда принести не могут, сколь бы ложными они ни были
 

untied

Сдвинутый новичок
Если скрипту можно передать некие параметры, от которых он может сломаться, причем в самом скрипте требуется проверка, чтобы такие параметры не были переданы, то это явно бред!
Единственное объяснение такой ситуации, которое мне приходит в голову -- это то, что сам скрипт и проверку пишут разные люди. :D
 

PiratusXP

Новичок
Вот это пройдет без защиты:
mod=Catalog&file=viewfile&lid=22'%20UNION%20
SELECT%200,email, 0,0,0,0,0,0%20FROM%20user%20WHERE%20userid='1&cat=50 0

-~{}~ 09.01.05 19:59:

untied Возможно что разные, я этот скрипт нашол в сети

-~{}~ 09.01.05 20:03:

А вообще скащите эту типо защиту можно обойти?
 

SelenIT

IT-лунатик :)
PiratusXP
Не ходи в такие сети, где лежат скрипты, в которых вводимые данные сразу вставляются в SQL-запрос, без предварительной подготовки - добавления слешей, использования [m]intval[/m] для числовых параметров и т.п. Лучше сюда ходи: PHP FAQ: \"Кавычки \". Cоставление запросов mysql....
 

neko

tеam neko
PiratusXP
раз нашел скрипт, значит и защиту найти можно
 

Djibo

Guest
надо на форуме раздел создать "параноя" чтоб там вот такие вот топики собирать и чтоб другие почитав, такого не писали.
 

Crazy

Developer
Автор оригинала: PiratusXP
Вот это пройдет без защиты:
mod=Catalog&file=viewfile&lid=22'%20UNION%20
SELECT%200,email, 0,0,0,0,0,0%20FROM%20user%20WHERE%20userid='1&cat=50 0
И как же -- в твоем представлении -- твоя защита спасет от этого? :)
 

ForJest

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

Фанат

oncle terrible
Команда форума
ForJest
ага, а особенно - универсальности.
если mod - не Catalog, то проверка не пропустит.

А, главное, от sql инъекцтий защита такая - это да, просто верх изящества.
внедряй у себя.
 
Сверху