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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Вопрос от начинающего программиста, прошу ногами не пинать ...
dmitry
Отправлено: 23 Ноября, 2011 - 08:37:06
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Добрый день уважаемые программисты.

Пытаюсь доработать плагин по безопасности для своего блога на 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?

Заранее спасибо за Ваш ответ.
 
 Top
filkeith
Отправлено: 23 Ноября, 2011 - 08:48:55
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




Ну или я не правльно понял что надо или же про вместо

пишешь
 
 Top
EuGen Администратор
Отправлено: 23 Ноября, 2011 - 08:51:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
dmitry
Отправлено: 23 Ноября, 2011 - 10:22:06
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




filkeith пишет:
пишешь
PHP:
$_POST['something']


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


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

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

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



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)





Почитай об этих функциях


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
filkeith
Отправлено: 23 Ноября, 2011 - 13:01:35
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




а зачем длину проверять, проверя переменные и всё, что вводится в формы.
Т.О. например для фильтрации форм удаляй все нежелательные тэги и знаки так:
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.                 }
 
 Top
dmitry
Отправлено: 23 Ноября, 2011 - 13:32:01
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Спасибо Вам за Вашу помощь.

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

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

По этому для меня (как панацея на первое время) найти решение глобально проверять все данные передаваемые методом POST.
Если есть такая возможность, подскажите пожалуйста ...
 
 Top
filkeith
Отправлено: 23 Ноября, 2011 - 14:56:28
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




т.е. надо перебоать все данные что передаются в 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, которые передали будут перелопачены

хотя я опять чего то не понимаю. Это ж всёравно во все абработчики пихать надо, лучше буду молчать Ниндзя

(Отредактировано автором: 23 Ноября, 2011 - 14:58:51)

 
 Top
dmitry
Отправлено: 23 Ноября, 2011 - 15:18:00
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




filkeith пишет:
хотя я опять чего то не понимаю. Это ж всёравно во все абработчики пихать надо, лучше буду молчать


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

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

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



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




dmitry пишет:
Например кто то вводит данные в плагин Contact form , я могу прочитать передаваемые данные формы в моем плагине?

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


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




filkeith пишет:
dmitry пишет:
Например кто то вводит данные в плагин Contact form , я могу прочитать передаваемые данные формы в моем плагине?

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


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


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB