Защищен ли запрос от SQL инъекций?

238
08 сентября 2017, 22:43

Подскажите функции для защиты) вот сам запрос) Все параметры в метод передаются из строки запроса.

$catSlug = Slug категории
$page = страница пагинации

public static function catProductList($catSlug, $page = 1)
    {
        if ($catSlug) {
        $page = intval($page);
        $offset = ($page - 1) * self::SHOW_BY_DEFAULT;
        $db = Db::getConnection();
        $catProd = array();
        $result = $db->query("SELECT * FROM product WHERE status='1' AND category_sl='$catSlug' ORDER BY id DESC LIMIT ".self::SHOW_BY_DEFAULT." OFFSET ".$offset);

        $i = 0;
        while($row = $result->fetch()){
            $catProd[$i]['id'] = $row['id'];
            $catProd[$i]['name'] = $row['name'];
            $catProd[$i]['price'] = $row['price'];
            $catProd[$i]['image'] = $row['image'];
            $catProd[$i]['is_new'] = $row['is_new'];
            $catProd[$i]['slug'] = $row['slug'];
            $i++;
        }
        return $catProd;
        }

    }
Answer 1

А где сама фильтрация запроса? Защита от SQL идёт специальным списком функции. Так для MySQL в PHP есть mysqli_real_escape_string($db, query) для PDO есть подновлённые запросы, и так далее.

Answer 2

В принципе, если строго следить за типами данных, которые приходят в таблицу, можно обойтись без специальных функций экранирования данных. Но, в случае невнимательности, могут возникнуть проблемы. И так как вы и так используете PDO, то работайте с подготовленными выражениями. Что может на первый взгляд показаться и сложным, и легко допустить ошибку, но есть решение, это передача данных в подготовленные выражения массивом, они с ним отлично работают.

READ ALSO
Переход на PHP 7 Как переделать из preg_replace в preg_replace_callback?

Переход на PHP 7 Как переделать из preg_replace в preg_replace_callback?

ЗдравствуйтеПеревожу сайты на PHP и там в шаблонизаторах используется такая конструкция

251
Диапазонное регулярное выражение

Диапазонное регулярное выражение

Что то голову сломалНужно вырезать все числа в диапазонах от 45

247
php проверка строки

php проверка строки

Здравствуйте, нужно проверить строку $str1 = 'abc123'; и $str2 = 'abc123ABCАбв-+';

316
Парковка доменов

Парковка доменов

Доброго времени сутокВопрос к знатокам или знакомым с данным вопросом

245