проверить строку на опасные конструкции, получить длину GET запроса

modelsonline

Постоялец
Регистрация
18 Окт 2010
Сообщения
94
Реакции
9
1. надо распознать наличие опасных символов и конструкций (не большинства а по возможности всех известных) в GET запросе. Может класс какой есть. Параметры проверяются в данный момент так:
PHP:
$known_params = array(	'param1'=> '/^[0-9]{2,3}$/', 'param2' => '/^yes|no$/i');

foreach ($_GET as $param => $value) {
	if (array_key_exists($param, $known_params)) {
		if (!preg_match($known_params[$param], $value)) {
			die($err['param_bad_format']." ($param)");
		}
	} else {
		die($err['param_unknown']." ($param)");
	}
}
Есть ли тут возможные проблемы.

2. как получить длину GET запроса, ту что непосредственно отдает веб сервер бэкэнду php-fcgi.


Где 1. и 2. безопаснее обрабатывать - на стороне nginx или методами php?
 
1. htmlspecialchars() и intval() в большинстве случаев достаточно,
ну и еще можно явассылки убирать - str_ireplace($_GET[], "javascript", "яваскрипт")
2. strlen($_SERVER['REQUEST_URI'])
 
2. возможно
1. хочу проверить вот так
PHP:
$good = array ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
					'u', 'v', 'x', 'y', 'z', 'w', ' ', '.',
					'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
					'-', '_', '?', '&' )
если есть в $_SERVER['REQUEST_URI'] любой символ, не входящий в массив - die()
Как сделать побыстрее и побезопаснее?
 
Где 1. и 2. безопаснее обрабатывать - на стороне nginx или методами php?
как ты собрался проверять данные на стороне веб сервера?
Это полуночный бред какойто.

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