CodeIgniter автоматически предотвращает внедрение SQL? - PullRequest
59 голосов
/ 24 октября 2009

Я просто унаследовал проект, потому что последний разработчик ушел. Проект построен из Code Igniter. Я никогда раньше не работал с Code Igniter.

Я быстро взглянул на код и вижу вызовы базы данных в контроллере следующим образом:

$dbResult = $this->db->query("SELECT * FROM users WHERE username = '".$_POST['user_name']."'");

или такие звонки:

$dbResult = $this->db->query("SELECT * FROM users WHERE username = '".$this->input->post('username')."'");

Запрещает ли средство воспламенения кода эти запросы для предотвращения внедрения SQL-кода?

Ответы [ 12 ]

0 голосов
/ 04 марта 2014

Оптимизирован со вторым пост-параметром (TRUE) для фильтрации XSS на входном уровне:

$this->db->where('username',$this->input->post('user_name', TRUE);
$dbResult = $this->db->get('users');

библиотеки / input.html

0 голосов
/ 29 апреля 2011

Это может быть неприятно, но вы должны преобразовать свои запросы в активную запись.

Я копирую из руководства CodeIgniter: «Помимо простоты, основным преимуществом использования функций Active Record является то, что он позволяет создавать независимые от базы данных приложения, поскольку синтаксис запросов генерируется каждым адаптером базы данных. Он также позволяет выполнять более безопасные запросы. , поскольку значения автоматически экранируются системой . "

И, как уже говорили некоторые люди, да, этот код подвержен SQL-инъекции

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