Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Wordpress plugin можно ли перехватить содержимое POST?
Форумы портала PHP.SU » » Вопросы новичков » Wordpress plugin можно ли перехватить содержимое POST?

Страниц (1): [1]
 

1. dmitry - 23 Ноября, 2011 - 08:37:06 - перейти к сообщению
Добрый день уважаемые программисты.

Пытаюсь доработать плагин по безопасности для своего блога на Wordpress 3.2.
Нашел пример плагина, который позволяет проверять длинную запроса GET.

PHP:
скопировать код в буфер обмена
  1.  
  2.         if(strlen($_SERVER['REQUEST_URI']) > 250)
  3.         {
  4.                 @header("HTTP/1.1 414 Request-URI Too Long");
  5.                 @header("Status: 414 Request-URI Too Long");
  6.                 @header("Connection: Close");
  7.                 @exit;
  8.         }
  9.  


Можно ли как то ГЛОБАЛЬНО проверять длину запроса передаваемого через форму методом POST?

Заранее спасибо за Ваш ответ.
2. filkeith - 23 Ноября, 2011 - 08:48:55 - перейти к сообщению
Ну или я не правльно понял что надо или же про вместо

пишешь
3. EuGen - 23 Ноября, 2011 - 08:51:54 - перейти к сообщению
http://ru2.php.net/manual/en/ini...ni.post-max-size
4. dmitry - 23 Ноября, 2011 - 10:22:06 - перейти к сообщению
filkeith пишет:
пишешь
PHP:
$_POST['something']


Эта переменная будет содержать любые данные передаваемые в POST?


Если задаю глупый вопрос, прошу меня великодушно простить. На углубленное изучение времени нет ... хакеры "имеют" мой блог "и в хвост и в гриву". Не знаю за что хвататься... Пытаюсь как то противостоять происходящему ...

В первом посте не совсем полно описал задачу ... кроме длинны передаваемого запроса, нужно проверять не передается ли зловредный код через любую форму моего блога (пример eval(, .php .sh и т.д. ). Форм понаписал много, вроде кое где проверил, но хотелось бы универсальности т.к. сайт у меня не один.

Буду признателен за Вашу помощь.
Подскажите пожалуйста как это сделать, если такое возможно ...
P.S. Для GET я вроде бы все необходимое уже написал, наверное для POST нужно как то по другому описывать?
5. snikers987 - 23 Ноября, 2011 - 11:02:14 - перейти к сообщению

Почитай об этих функциях
6. filkeith - 23 Ноября, 2011 - 13:01:35 - перейти к сообщению
а зачем длину проверять, проверя переменные и всё, что вводится в формы.
Т.О. например для фильтрации форм удаляй все нежелательные тэги и знаки так:
PHP:
скопировать код в буфер обмена
  1.         function ChekData($message)
  2.                 {
  3.                 $notalload = array ("'<script[^>]*?>.*?</script>'si",
  4.                  "'<[\/\!]*?[^<>]*?>'si",      
  5.                  "'([\r\n])[\s]+'",        
  6.                  "'&(quot|#34);'i",        
  7.                  "'&(amp|#38);'i",
  8.                  "'&(lt|#60);'i",
  9.                  "'&(gt|#62);'i",
  10.                  "'&(nbsp|#160);'i",
  11.                  "'&(iexcl|#161);'i",
  12.                  "'&(cent|#162);'i",
  13.                  "'&(pound|#163);'i",
  14.                  "'&(copy|#169);'i",
  15.                  "'&#(\d+);'e");
  16.                 $message=preg_replace($notalload, "", $message);
  17.                 }

а то что передается в GET и POST если это циферные значения, то как то так:
PHP:
скопировать код в буфер обмена
  1.         function ChekUrl($url)
  2.                 {
  3.                 preg_match("#(\d+)#",$url,$match);
  4.                 $url = ($match[1] != "") ? $match[1] : 1;
  5.                 $link=intval($url);
  6.                 }
7. dmitry - 23 Ноября, 2011 - 13:32:01 - перейти к сообщению
Спасибо Вам за Вашу помощь.

Вы дали имена функций, которые необходимо встроить внутрь обработчика каждой формы, это очень полезная информация. Но у меня два десятка сайтов и три из них в данное время атакуются взломщиками всех мастей. Прям как полигон для тренировок ...
И это еще не все сайты ... мне нужно сделать еще как минимум десяток сайтов. Если я буду проверять все формы которые сделал я и все формы которые сделал кто то (плагины) ... то на это уйдет много времени.

Я думал, что есть возможность глобально проверять значения POST так же как и GET. А уже когда отбиться от основной атаки то пересмотреть те формы которые есть на сайте ... свои то формы я посмотреть смогу, но есть плагины например ContactForm в которых тоже могут быть уязвимости, но при этом у меня опыта не хватит чтобы проверить такие плагины на уязвимость.

По этому для меня (как панацея на первое время) найти решение глобально проверять все данные передаваемые методом POST.
Если есть такая возможность, подскажите пожалуйста ...
8. filkeith - 23 Ноября, 2011 - 14:56:28 - перейти к сообщению
т.е. надо перебоать все данные что передаются в POST и проверить их?
если да то:
PHP:
скопировать код в буфер обмена
  1.         $notalload = array ("'<script[^>]*?>.*?</script>'si",
  2.                  "'<[\/\!]*?[^<>]*?>'si",      
  3.                  "'([\r\n])[\s]+'",        
  4.                  "'&(quot|#34);'i",        
  5.                  "'&(amp|#38);'i",
  6.                  "'&(lt|#60);'i",
  7.                  "'&(gt|#62);'i",
  8.                  "'&(nbsp|#160);'i",
  9.                  "'&(iexcl|#161);'i",
  10.                  "'&(cent|#162);'i",
  11.                  "'&(pound|#163);'i",
  12.                  "'&(copy|#169);'i",
  13.                  "'&#(\d+);'e");
  14.        
  15.         foreach($_POST as $x => $y)
  16.         {
  17.      $_POST[$x] = preg_replace($notalload, '', $y);
  18.          echo $_POST[$x];//это просто что бы результат видеть, можно и убрать
  19.         }

т.о. все значения POST, которые передали будут перелопачены

хотя я опять чего то не понимаю. Это ж всёравно во все абработчики пихать надо, лучше буду молчать Ниндзя
9. dmitry - 23 Ноября, 2011 - 15:18:00 - перейти к сообщению
filkeith пишет:
хотя я опять чего то не понимаю. Это ж всёравно во все абработчики пихать надо, лучше буду молчать


Почему Вы не понимаете, это я не понимаю Улыбка

Ваш пример просто СУПЕР! О Вашем примере мы обязательно поговорим подробнее ...

Попробую перефразировать свой вопрос. Переменная POST она глобальная?
Например кто то вводит данные в плагин Contact form , я могу прочитать передаваемые данные формы в моем плагине?
10. filkeith - 23 Ноября, 2011 - 15:46:46 - перейти к сообщению
dmitry пишет:
Например кто то вводит данные в плагин Contact form , я могу прочитать передаваемые данные формы в моем плагине?

я что то туплю просто Не понял
Теперь понял что надо, но вопрос, ваш плагин с проверкой $_SERVER['REQUEST_URI'] он же должен на каждой странице срабатывать, т.е. его надо на каждую страницу добавить, так?
11. dmitry - 23 Ноября, 2011 - 15:56:26 - перейти к сообщению
filkeith пишет:
dmitry пишет:
Например кто то вводит данные в плагин Contact form , я могу прочитать передаваемые данные формы в моем плагине?

я что то туплю просто Не понял
Теперь понял что надо, но вопрос, ваш плагин с проверкой $_SERVER['REQUEST_URI'] он же должен на каждой странице срабатывать, т.е. его надо на каждую страницу добавить, так?


Да плагин обрабатывает все страницы. Если посетитель сайта предпринял какие то противоправные действия, то плагин его банит на сутки (ведет лог, чтобы можно было глянуть что посетители делают). С $_SERVER['REQUEST_URI'] работает все отлично, но как я понимаю, $_SERVER['REQUEST_URI'] это метод GET, а мне нужно еще обезопасить метод POST или это одно и тоже?

 

Powered by ExBB FM 1.0 RC1