CodeIgniter автоматически предотвращает Внедрение SQL?

JMF был заброшен. VLC более актуален и читает все. https://stackoverflow.com/a/5160010

Я думаю, что vlc превосходит все остальные программы, или, по крайней мере, те, которые я знаю ...

60
задан Abdulla Nilam 13 July 2015 в 05:15
поделиться

7 ответов

CodeIgniter ИСКЛЮЧАЕТ переменные, которые вы передаете при использовании метода $ this-> db-> query . Но ТОЛЬКО когда вы передаете переменные в качестве привязок, вот пример:

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

Также помните, что $ _ POST не должно быть предпочтительнее $ this-> input-> post с тех пор, как он проверяет, существуют ли переменные, чтобы предотвратить ошибки.

68
ответ дан 24 November 2019 в 17:45
поделиться

Вы должны использовать $ this-> input-> post, привязку запроса и активную запись, чтобы иметь более безопасные данные, а затем еще, тестовый тест проверить, чтобы убедиться.

2
ответ дан 24 November 2019 в 17:45
поделиться

Нет, CodeIgniter не будет волшебным образом дезинфицировать запросы, которые были созданы подобным образом.

3
ответ дан 24 November 2019 в 17:45
поделиться

Согласно документам CI здесь , фреймворк фильтрует POST о конструкции контроллера. При желании он также выполняет фильтрацию XSS, вызывая функцию вручную или задавая глобальную конфигурацию.

Я никогда не использовал CI, кроме как просто поиграться с ним, поэтому я не уверен, насколько я этому доверяю.

1133107]

3
ответ дан 24 November 2019 в 17:45
поделиться

Нет, опубликованный вами код восприимчив к SQL-инъекции. Вам необходимо использовать привязку запроса для построения ваших SQL-запросов. Если вы используете библиотеку CI DB, вы должны закодировать ее примерно так (пример из руководства пользователя):

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";

$this->db->query($sql, array(3, 'live', 'Rick')); 
13
ответ дан 24 November 2019 в 17:45
поделиться

That doesn't escape anything. You are better off changing it to the bind syntax or the active record syntax

2
ответ дан 24 November 2019 в 17:45
поделиться

Codeigniteriter предоставляет несколько функций скрепления строки в своем слое базы данных.

Выдержка из Руководство CI :

Это очень хорошая практика безопасности, чтобы избежать ваших данных, прежде чем отправлять его в вашу базу данных. Codeigniter имеет три метода , которые помогут вам сделать это:

  1. $ this-> db-> escape () Эта функция определяет тип данных, чтобы он мог избежать только строковых данных. Он также автоматически добавляет отдельные цитаты вокруг данных, поэтому вам не нужно:

     $ SQL = «Вставить в значения таблицы (заголовок) (». $ This-> db-> escape ($ title). ")"  ;
     

Я бы опубликовал два других примера, но я не хотел бы взять на себя все удовольствие от чтения руководства.

21
ответ дан 24 November 2019 в 17:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: