Предотвращение SQL-инъекций в codeigniter - PullRequest
4 голосов
/ 12 октября 2010

В моем проекте я использую $ this-> input -> (get | post) для передачи данных в модели.В моделях я всегда использую активные записи.Этого достаточно, чтобы предотвратить инъекции sql?

1 Ответ

4 голосов
/ 12 октября 2010

Нет, это не . Редактировать : Да, это так ... не видел вашего комментария о том, что вы используете активные записи. Вам необходимо либо вручную экранировать свои входные данные, используя экранирующие функции PHP или CodeIgniter, либо использовать привязки запросов CodeIgniter , либо использовать класс Active Record CodeIgniter . Я предпочитаю делать привязки запросов, так как это а) делает мои запросы более приятными и б) гарантирует, что все мои входные данные очищены перед запуском в MySQL.

http://ellislab.com/codeigniter/user_guide/database/queries.html

Это работает так:

$qStr = "SELECT * FROM students WHERE id=?";
$q = $this->db->query($qStr, array($id);

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

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