CodeIgniter Форма безопасности ввода - PullRequest
1 голос
/ 14 июня 2011

Автоматически ли Codeignited очищает и защищает ввод формы (для внедрения в БД, XSS и т. Д.), И я могу использовать, как указано ниже?

$this->input->post('name')

или мне нужно обеспечить его самому? Что было бы лучшим способом сделать это? Спасибо.

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

В "config.php" в папке "config" вашего приложения есть настройки для включения глобальной фильтрации XSS:

$config['global_xss_filtering'] = FALSE;

Второй параметр функции post () указывает, применять ли фильтр XSS к этой строке:

$this->input->post('name', TRUE);

Наконец, вы можете использовать класс проверки формы для проверки данных:

$this->form_validation->set_rules('name', 'Name', 'xss_clean');

Вам следует избегать использования глобальной XSS-фильтрации, поскольку она довольно ресурсоемкая.

2 голосов
/ 14 июня 2011

НЕТ, это не дает вам 100% безопасности.

Тем более, что оно зависит от , куда вводится.Если вы обеспокоены атаками XSS, вы можете передать TRUE в качестве второго параметра и применить фильтр XSS к этому входу (но будьте осторожны, поскольку операция довольно затратна с точки зрения ресурсов, поэтому не используйте дико)

$this->input->post('name', TRUE)

Подробнее о Класс ввода в Руководстве пользователя.

Если ввод поступает в базу данных, то вы либо экранируете его вручную с помощью $ this->db->escape() (и других его двоюродных братьев), или вы используете привязки запросов или, ради скорости и простоты, вы можете обратиться к Active Record Class , который автоматически экранирует все данные, входящие в запрос.(это если вы не хотите использовать свой пользовательский экранирование с mysql_real_escape_string или с подготовленными инструкциями mysqli_ и PDO)

Редактировать:

Да, фильтр XSSможет быть загружен в конфигах, но это очень глубокий и тщательный процесс, который занимает много ресурсов.Как говорится:

Note: This function should only be used to deal with data upon submission.
It's not something that should be used for general runtime processing since it requires
a fair amount of processing overhead.

Обратите внимание, что у вас также есть защита от подделки межсайтовых запросов (CSRF), больше здесь .

Если вы беспокоитесь о производительности,вы также можете использовать php native htmlentities($str, ENT_QUOTES); перед выводом $ str на html-страницу.

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