Использование оператора SQL в методе WHERE (Codeigniter) для предотвращения внедрения SQL - PullRequest
0 голосов
/ 06 сентября 2018

Защищает ли этот код от SQL-инъекций?

    $where = "(color = '$color' AND flavor = '$flavor') OR (quality = '$quality' AND price = '$price')";
    $this->db->where($where);
    $result = $this->db->get('fruits');

Основано на Codeigniter Docs как говорится.

$ this-> db-> where () принимает необязательный третий параметр.Если вы установите значение FALSE, CodeIgniter не будет пытаться защитить ваши имена полей или таблиц.

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

Правильно ли изменить предыдущее выражение на это?

    $where = "(color = '$color' AND flavor = '$flavor') OR (quality = '$quality' AND price = '$price')";
    $this->db->where($where, NULL, TRUE);
    $result = $this->db->get('fruits');

IЯ немного потерян или я должен использовать это.

    $array = array('color' => $color,
                   'flavor' => $flavor,
                   'quality' => $quality,
                   'price' => $price);
    $where = "(color = ? AND flavor = ?) OR (quality = ? AND price = ?)";
    $this->db->where($where, $array, TRUE);
    $result = $this->db->get('fruits');

1 Ответ

0 голосов
/ 07 сентября 2018

Вы должны использовать последний. Невозможно обнаружить, что «защищать» в других запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...