мой вход предотвращено против инъекции SQL?
Не совсем «автоматически», но он предоставляет параметризованные запросы. CodeIgniter или нет, вы должны использовать параметризованные запросы, предпочитая хакерство строки запроса, когда это возможно.
$bof= "a'b";
$zot= 'a\b';
// Insecure! Don't do this!
//
$this->db->query("SELECT foo FROM bar WHERE bof='$bof' AND zot='$zot'");
// Secure but annoying to write
//
$this->db->query("SELECT foo FROM bar WHERE bof='".$this->db->escape($bof)."' AND zot='".$this->db->escape($zot)."'");
// This is what you want
//
$this->db->query('SELECT foo FROM bar WHERE bof=? AND zot=?', array($bof, $zot));
Примечание это не имеет ничего общего с «входом»: когда вы делаете запрос SQL из строк вы необходимо использовать параметризацию или бежать, чтобы сделать их пригодными, независимо от того, являются ли они вводимые пользователем или нет.Это вопрос простой правильности; безопасность является побочным эффектом этой корректности.
Аналогично при выводе текста в HTML, вам нужно HTML-кодирование <
, &
и "
символов в нем затем. Это абсолютно бесполезно, пытаясь возиться с входом, чтобы избежать или удалить символы, которые могут быть неприятными в будущем, если вы используете их без экранирования в SQL или HTML. Вы отмените свой вывод, вызвав неожиданное SQL-экранирование в HTML (именно поэтому вы видите самомножающиеся обратные косые черты в плохо написанных приложениях) и нежелательное экранирование HTML в SQL. И если вы берете текст откуда-то, кроме этого прямого ввода пользователем (скажем, материала уже в базе данных), вы вообще не защищены.
Также Xssclean заключает контракт с SQL-инъекцией каким-либо образом?
№ Предназначен для инъекций в формате HTML. Но это хуже, чем ничего не стоит. Никогда не используйте его.
«XSS-фильтрация» полностью фиктивная (опять же, CodeIgniter или кто-то еще). XSS должен быть предотвращен корректным выводом HTML-вывода, а не изменением ввода. XSS-фильтрация будет не адекватно защитит вас, если ваше приложение еще не безопасно; в лучшем случае это будет запутывать ваши существующие недостатки и дать вам ложное чувство безопасности. Он также будет калечить много допустимых входных данных, которые, по мнению CI, выглядят как теги.
Слово «активная запись» может быть неправильно истолковано, а документы CI имеют изменения в 'query builder' https://codeigniter.com/user_guide/database/query_builder.html – teek