Класс реализует фильтрацию данных $_GET, $_POST и $_COOKIE. Также умеет фильтровать JSON-массивы.
Класс заточен под юникод.
Зойчем нужен этот класс?
Класс фильтрует GET POST и COOKIE запросы от "вредных" вещей. В частности - поможет защитить сайт от XSS-атак (Вставки кода в страницу). Подробнее по XSS - здесь: http://ru[dot]wikipedia[dot]org/wiki/xss
Чтобы защититься, достаточно НЕ использовать входные GPC-запросы напрямую (никогда не доверяйте пользователям), а получать их через этот класс как описано в примере.
Обратите внимание, данный скрипт - НЕ защитит от атак типа SQL-injection, ибо там есть свои заморочки, и их я здесь не рассматриваю.
Для работы необходимо наличие расширения mbstring на сервере.
PHP:
скопировать код в буфер обмена
/****************KILLER**************\ |* "'';!--\"<XSS>=&{()}" *| \************************************/ class gpc { public $get_data = array(); public $post_data = array(); public $cook_data = array(); public $encoding = 'UTF-8'; function __construct() { $this -> get_data = $this -> filter_vars($_GET, 'get'); $this -> post_data = $this -> filter_vars($_POST, 'post'); $this -> cook_data = $this -> filter_vars($_COOKIE, 'cookie'); } public static function __data_clean($input) { } private function filter_vars($input) { foreach ($input as $k => &$v) { { $v = $this -> filter_vars($v); } else { $v = self::__data_clean($v); } } return $input; } }
Пример использования:
PHP:
скопировать код в буфер обмена
<?PHP // Файл: test.php // Создаём экземпляр класса: $requests = new GPC; ?> <form method="post" action="test.php"> <input type="text" value=""> <input type="submit" value="Послать"> </form> <?PHP if (isset($requests -> post_data['submit'])) { echo $requests -> post_data['text']; } ?>
(Отредактировано автором: 26 Октября, 2012 - 15:12:29)
|