Базовое понимание предотвращения SQL-инъекций в codeigniter - PullRequest
1 голос
/ 21 марта 2012

Здравствуйте, я в настоящее время на второй день учебника Джеффри Уэй по Codeigniter. В этом скриншоте он сказал, что в строках ниже

$sql = "SELECT title, author, contents FROM data
    WHERE id = ? AND author = ?";
    $q= $this-> db-> query($sql, array(1,'jeffrey'));

что если пользователь введет что-нибудь смешное там, где должен быть 'jeffrey', то оно будет автоматически экранировано, что предотвратит инъекцию sql.

Это из-за того, что codeigniter имеет свою собственную проверку в параметрах query ()? Или это вообще привязка значений к? мешает впрыску sql вообще?

(Основное понимание, которое я имею в отношении SQL-инъекций, заключается в том, что вы можете ввести «содержимое jeffrey AND DROP TABLE», что приведет к значительному уничтожению таблицы или выполнению других плохих команд mysql)

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

CodeIgniter забавен тем, как он выполняет параметризованные запросы.Буквально вчера мы обсуждали это аналогичным образом, и из этого поста можно получить много полезных знаний по этому вопросу: Драйвер CodeIgniter PDO использует запрос вместо подготовки?Разве это не менее безопасно?

Документация CodeIgniter называет его Привязки запросов и говорит об этом:

Вторым преимуществом использования связываний является то, что значения автоматически экранируются, создавая более безопасные запросы.Вам не нужно помнить, чтобы вручную экранировать данные;Движок делает это автоматически для вас.

По сути, я считаю, что это оболочка для PDO :: query (), которая фильтрует ввод, обеспечивая правильное экранирование и цитирование перед выполнением вызова.

0 голосов
/ 21 марта 2012

CodeIgniter экранирует переменные, которые вы передаете, используя метод запроса $ this-> db->.Но ТОЛЬКО когда вы передаете переменные как связки, как вы упомянули в своем вопросе.

CodeIgniter распознает тип данных вашей переменной и обернет ее соответствующим образом.То есть, если это строка, она поместит ' и ' вокруг экранированного значения в SQL, что необходимо для того, чтобы пользователи не могли внедрить что-либо вредоносное.

Надеюсь, чтопомогает

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