мой вход защищен от внедрения 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, вам нужно кодировать в него <
, &
и "
символов , а затем .Абсолютно бесполезно пытаться поиграть с вводом, чтобы избежать или удалить символы, которые могут быть проблематичными в будущем, если вам случится использовать их без экранирования в SQL или HTML.Вы будете манипулировать своим выводом, имея неожиданный SQL-выход в HTML (именно поэтому вы видите самосумножающиеся обратные слэши в плохо написанных приложениях) и нежелательный HTML-переход в SQL.И если вы берете текст откуда-то, кроме прямого ввода пользователя (скажем, материала, уже находящегося в базе данных), который вас вообще не защищает.
Кроме того, xssclean имеет какое-либо отношение к SQL-инъекции?
Нет.Он нацелен на внедрение HTML.Но это хуже бесполезного .Никогда не используйте его.
«XSS-фильтрация» полностью поддельная (опять же, CodeIgniter или кто-то еще).XSS нужно предотвратить, правильно выводя HTML-код, а не искажая ввод.XSS-фильтрация не адекватно защитит вас, если ваше приложение еще не защищено;в лучшем случае это запутает ваши существующие недостатки и даст вам ложное чувство безопасности.Он также будет искажать множество допустимых входных данных, которые CI считает похожими на теги.