Нужна ли чистка присланных параметров?

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.527
Реакции
121
Вопрос такой, нужно ли присланный идентификатор (ключ массива) как-то обрабатывать? Можно ли сделать что-нибудь подобное SQL-инъекции, открыть кавычки впихнуть php-код и т.п.?
Пробовал, не получилось, все присланные данные воспринимаются, как строка, без выполнения php-кода. Но я не все и знаю.

Например, есть в БД массив:
PHP:
array( 0=> 'red', 1=>'black', 2=>'green', );
Пользователь прислал (POST или GET) массив
PHP:
array( 0=>'red', 2=>'green' )
Я беру массив из БД и прохожу его
PHP:
foreach( $arr_bd as $k=>$param ){
   $value = $_POST[  $k ] ;
}
Т.е. прохожу по всем значениям массива из БД, беру идентификатор значения (например, id) и ищу по этому ключу значение в массиве, что прислал пользователь. Если есть значение, то его сравниваю с допустимым из БД. Если ОК, то дальше работают.
Или проверяю через if( ! empty($value ) )
 
Вопрос такой, нужно ли присланный идентификатор (ключ массива) как-то обрабатывать? Можно ли сделать что-нибудь подобное SQL-инъекции, открыть кавычки впихнуть php-код и т.п.?
Пробовал, не получилось, все присланные данные воспринимаются, как строка, без выполнения php-кода. Но я не все и знаю.

Например, есть в БД массив:
PHP:
array( 0=> 'red', 1=>'black', 2=>'green', );
Пользователь прислал (POST или GET) массив
PHP:
array( 0=>'red', 2=>'green' )
Я беру массив из БД и прохожу его
PHP:
foreach( $arr_bd as $k=>$param ){
   $value = $_POST[  $k ] ;
}
Т.е. прохожу по всем значениям массива из БД, беру идентификатор значения (например, id) и ищу по этому ключу значение в массиве, что прислал пользователь. Если есть значение, то его сравниваю с допустимым из БД. Если ОК, то дальше работают.
Или проверяю через if( ! empty($value ) )
Просто фильтруйте данные отправляемые в бд...
используйте

stripslashes
strip_tags
$string = str_replace('`', '\`', $string);

Такиф функций фильтров готовых полно в сети!
 
SQL-инъекции могут быть только в SQL-запросах к базе данных. Они применяются для получения или изменения каких-либо данных в базе, например, с целью получения административных прав и т.п.
То, о чем вы спрашиваете (выполнение несанкционированного PHP-кода) возможно только если вы используете в своем коде php-функцию eval
 
В приведенном коде нет ничего страшного.

+ Вы уверены что в пост массиве есть все ключи из БД?

Но тут ещё вопрос, что дальше будете делать с $value
 
В приведенном коде нет ничего страшного.

+ Вы уверены что в пост массиве есть все ключи из БД?

Но тут ещё вопрос, что дальше будете делать с $value
Если прислали левые данные, значит они левые. Те, что нашлись в БД и в POST, с ними и работаю дальше. Далее, сравнивается присланное значение элемента массива POST со значением из БД, т.к. допустимые значения, так сказать. Если совпадает, то сохраняем в чистый массив. И полученный массив далее уже используется (вывод, сохранение и т.п.).
 
Если вариантов не много то можно проверить его по регулярке и в случае разрешенного вхождения - провести манипуляцию с базой. Без каких либо массивов.
 
Пользователь прислал (POST или GET) массив
Любой запрос (POST или GET) содержит в себе строку с данными. Если эти данные не фильтровать, то возможно будет использовать сторонний код. Так что в любом случае отсылаемые данные нужно обрабатывать. Это аксиома!
 
Любой запрос (POST или GET) содержит в себе строку с данными. Если эти данные не фильтровать, то возможно будет использовать сторонний код. Так что в любом случае отсылаемые данные нужно обрабатывать. Это аксиома!
вопрос в том, будет ли исполняться этот код, если его вставлять в функции, как аргументы или в приведенном выше примере?
 
вопрос в том, будет ли исполняться этот код, если его вставлять в функции, как аргументы или в приведенном выше примере?
Принимаешь числа? Для просмотра ссылки Войди или Зарегистрируйся прогони через эту функцию и не парься. Все параметры которые идут в базу данных - фильтруй по конкретному содержимому регулярками или просто экранируй кавычки.
 
Назад
Сверху