|
|
|
|
|
|
|
|
|
запрет на запросы (post и Get)
| |
#1 | |
|
09.08.2006, 05:06
В нюке есть запрет на некоторые запросы.
В майнфале, например:
foreach ($_GET as $sec_key => $secvalue) {
if((eregi("<[^>]*script*\"?[^>]*", $secvalue)) ||
(eregi("<[^>]*object*\"?[^>]*", $secvalue)) || и т.д.
Смотрел как сделано, никак не соображу. Написал:
(eregi("UNION", $secvalue)) ||
modules.php?name=News&UNION - нормально, кажит новости
modules.php?name=News&op=UNION - переводит на ошибку
Вообще от греха подальше решил заблокировать все, что на сайте не используется в ссылках. Тоесть при совпадении определенных слов и символов блокировало.
Где бы не попало в запросе (ссылке) UNION, SELECT, префиксы, INTO, аппостраф и т.д. - сразу ошибка. Пусть даже если усер в поиске введет :)
|
|
|
|
|
|
|
09.08.2006, 23:35
Alexander-V-Sh а в чем вопрос?
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
10.08.2006, 01:54
Soniks
как правильно написать запретные слова чтобы вообще в ссылках не попадались, нигде, хоть вначале, хоть в середине, хоть как. :)
например пишу (а еще используется <[^>]* например в других строках)
(eregi("UNION", $secvalue)) ||
а modules.php?name=News&UNION нормально проходит...
Просто прочитал статейку про иньекции, где нет проверки переменных. Там как раз в строчку эта дрянь и вбивается. Проверки то ставлю, но вдруг где пропустил... модулей то и функций полно...
Или всетаки писать так :
(eregi("UNION", $secvalue)) ||
(eregi("SELECT", $secvalue)) ||
(eregi("INTO", $secvalue)) ||
(eregi("[", $secvalue)) ||
(eregi("]", $secvalue)) ||
(eregi("UPDATE", $secvalue)) ||
и т.д.
И этого достаточно чтобы блокировать нежелательные строки?
А то что modules.php?name=News&UNION проходит - ничего страшного, т.к. не угрожает, в отличч от modules.php?name=News&op=UNION, которая блокируется.
Последний раз редактировалось Alexander-V-Sh, 10.08.2006 в 16:45.
|
|
|
|
|
|
|
|
|
|
13.08.2006, 13:37
Alexander-V-Sh этот вариант не опасен modules.php?name=News&UNION , т.к. в скрипт передается переменная UNION и она не где не используется, а вот второй вариант опасен, т.к. в переменную op передается опасный код и он может быть задействован. Что бы фильтровать не только значение переменных, а и название самих переменных передающие методом GET, то тогда надо фильтровать не сам $_GET, а $_SERVER['QUERY_STRING'] это строка запроса к скрипту. можете посмотреть как это все выволнено в Сантинеле
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
Опции темы |
Поиск в этой теме |
|
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:21.
|
|
|
|
|
|
|
|
|
|
|
|
|