Sobes.tech
Назад к вопросам
Middle+
7

Найдите ошибку в коде и уязвимость (код с SQL-конкатенацией через QueryBuilder)

Компании, где спрашивали
CSSSR

Ответ от нейросети

sobes.tech AI

Ошибка в коде с SQL-конкатенацией через QueryBuilder обычно связана с тем, что разработчик вручную конкатенирует строки SQL-запроса, что приводит к уязвимости — SQL-инъекции. Даже если используется QueryBuilder, если параметры вставляются напрямую в строку запроса, а не через подготовленные выражения или методы привязки параметров, это опасно.

Пример уязвимого кода:

$query = $queryBuilder->select('*')
    ->from('users')
    ->where("username = '" . $_GET['username'] . "'");

Здесь параметр $_GET['username'] вставляется напрямую, что позволяет злоумышленнику внедрить SQL-код.

Правильный подход — использовать привязку параметров:

$query = $queryBuilder->select('*')
    ->from('users')
    ->where('username = :username')
    ->setParameter('username', $_GET['username']);

Таким образом, ошибка — ручная конкатенация параметров в запросе, уязвимость — возможность SQL-инъекции.