Безопасное использование $modx->query

Часто работаю со сторонними таблицами и хотел бы уточнить момент по поводу использования функции $modx->query.

Пример с документации:

$result = $modx->query(«SELECT * FROM modx_users WHERE id=1»);
if (!is_object($result)) {
return 'No result!';
}
else {
$row = $result->fetch(PDO::FETCH_ASSOC);
return 'Result:' .print_r($row,true);
}

Хочу уточнить насколько безопасно такое обращение к таблице, нужно ли использовать prepare для защиты от инъекций?
Igor Ostancov
31 июля 2013, 11:49
modx.pro
2 513
0

Комментарии: 3

Василий Наумкин
31 июля 2013, 15:54
0
1. Используй тег code для оформления кусков кода

2. Защищать запрос нужно только тогда, когда в него попадают данные от юзера ($_GET, $_POST) или из таблиц, заполняемых юзером.
В твоем случае этого нет.

3. В любом случае, при таких запросах советую использовать $modx->escape() или, что еще лучше, готовить запрос через xPDO.
    Igor Ostancov
    31 июля 2013, 18:05
    0
    1. Сорри с телефона писал, неудобно было.

    2. У меня иногда попадают данные оттуда, я стараюсь предварительно обрабатывать, но все равно хотелось бы быть уверенным, что за меня что-то проверит.

    3. За $modx->escape() спасибо. А по поводу xPDO не очень понял в этом случае. Я не имею классов для этих таблиц, соответственно мне подходит только последний пример из ссылки, который работает на PDO? Если так, то какая принципиальная разница в подходе из моего примера с PDO примером из ссылки?
      Василий Наумкин
      31 июля 2013, 19:08
      0
      3. Разница только в использовании prepare(), который защитит от инъекций, если делать запрос с плейсхолдерами.

      Вот, просвещайся.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3