![]() |
запрет на запросы (post и Get)
В нюке есть запрет на некоторые запросы.
В майнфале, например: 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, аппостраф и т.д. - сразу ошибка. Пусть даже если усер в поиске введет :) |
Alexander-V-Sh а в чем вопрос?
|
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 этот вариант не опасен modules.php?name=News&UNION , т.к. в скрипт передается переменная UNION и она не где не используется, а вот второй вариант опасен, т.к. в переменную op передается опасный код и он может быть задействован. Что бы фильтровать не только значение переменных, а и название самих переменных передающие методом GET, то тогда надо фильтровать не сам $_GET, а $_SERVER['QUERY_STRING'] это строка запроса к скрипту. можете посмотреть как это все выволнено в Сантинеле
|
Часовой пояс GMT +4, время: 17:36. |
Copyright © 2005 by Soniks