У меня есть функция set_rules в Codeigniter 3
я проверяю адрес электронной почты пользователя:
$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');
и когда я отправляю сообщение об ошибке:
Не удалось получить доступ к сообщению об ошибке, соответствующему имени вашего поля электронной почты.
Из codeigniter github:
В основном неизвестное правило об очистке XSS заключается в том, что оно должно применяться только к выходу, а не к входным данным.
Мы допустили эту ошибку с помощью нашей автоматической и глобальной функции очистки XSS (см. Предыдущий шаг о XSS выше), поэтому теперь, чтобы предотвратить эту практику, мы также удаляем «xss_clean» из официально поддерживаемого списка проверки формы правил .
Поскольку библиотека проверки формы обычно проверяет входные данные, правило «xss_clean» просто не входит в нее.
Если вам действительно необходимо применить это правило, теперь вы также должны загрузить Security Helper , который содержит xss_clean () в качестве регулярной функции и, следовательно, может также использоваться в качестве правила проверки.
И если, несмотря ни на что, вам это действительно нужно, перейдите в application / config / autoload.php:
$autoload['helper'] = array('security');
Или, прежде чем ваша форма проверки
$this->load->helper('security');
Альтернативой не является его использование, поскольку xss_clean делает санитацию и не проверяет . xss_clean является частью помощника безопасности. Если вам нужно это сделать, после проверки вы сделаете это.
$this->load->helper('security'); ` $value = $this->input->post('email',TRUE); //where TRUE enables the xss filtering
Кроме того, вы можете включить глобальную фильтрацию xss в файле config.php
$config['global_xss_filtering'] = TRUE;
Другие ссылались на него, но никто не сказал коротко, способ исправить эту ошибку состоит в том, чтобы удалить xxs_clean
из вашего правила проверки. Я просто наткнулся на эту проблему сам, и благодаря намеченным здесь подсказкам удалось решить проблему.
Эта:
$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');
Становится следующим:
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');
Загрузите помощника security
на autoload.php
$autoload['helper'] = array('security');
Не нужно ничего делать.
Глобальное переопределение этого правила будет расширять его с помощью специального сообщения следующим образом:
$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email', array('xss_clean' => 'Error Message: your xss is not clean.') );
Вы должны использовать.
$this->load->helper('security');
Также вы можете использовать приведенный ниже код в config / autoload.php, но я предпочитаю использовать вышеупомянутый код. Так как он сохраняет вес Codeigniter lite.
$autoload['helper'] = array('security');