[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: защита от sql иньекций в YII
lodas
Здравствуйте. Мне приходят некоторые параметры из форм ввода:
$category=$_GET['categ']//содержит id категории
$subcat=$_GET['sub_cat']//id подкатегории
$find=$_POST['search_query']//строка введенная в поиск

Я выполняю с ними запросы:
$rez_product =Product::model()->with('zapros_na_prod')->findAll('id_kat=:cat',array(':cat'=>$category));
$rez_product =Product::model()->findAll('sub_cat=:sub_cat',array(':sub_cat'=>$subcat));
$rez_product =Product::model()->findAll(array('condition' => "name LIKE '%$find%'"));

Является ли такой подход безопасным? При выполнении запроса проходят ли проверки на sql-injection? Нужно ли еще как то проверять?
bestxp
а ты бы сам проверил)))

использование плейсхолдеров уже частично решают этот вопрос
Aeq
первые 2 ок, третий не безопасен, нужно в запросе сделать плейсхолдер как в первых двух и передать переменную "%$find%"
lodas
Я попытался переделать третий параметр под плейсхолдеры:
$rez_product =Product::model()->findAll('name=:find',array(':find'=> "LIKE'%$find%'"));

Почему он тогда ничего не находит?
Invis1ble
Цитата (lodas @ 9.12.2013 - 18:57)
Я попытался переделать третий параметр под плейсхолдеры:
$rez_product =Product::model()->findAll('name=:find',array(':find'=> "LIKE'%$find%'"));

Почему он тогда ничего не находит?

не знаком с Yii, но рискну предположить, что выражение LIKE'%$find%' заключается в кавычки и получается запрос вида WHERE name='LIKE \'%$find%\''

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

lodas
Invis1ble, ну тут же в запросе я вроде заключил в кавычки
Цитата
"LIKE'%$find%'"
или нужно как то по другому?
TMake
$rez_product =Product::model()->findAll('name LIKE :find',array(':find'=> "%$find%"));
lodas
stepan спасибо)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.