Как библиотека проверки формы CodeIgniter обрабатывает XSS-фильтрацию? - PullRequest
1 голос
/ 11 августа 2009

Библиотека проверки формы CodeIgniter предоставляет возможность «подготовить» данные из формы, которая проверяется. Ниже приведен фрагмент из документации:

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');

Параметр xss_clean в конце, предположительно, передает данные почты через функцию xss_clean.

Мне интересно, как я могу использовать $_POST данные username? Действовала ли функция xss_clean непосредственно на переменную $_POST, чтобы я мог затем: $username = $this->input->post('username'); и фактически получить отфильтрованные данные? Что если я помещу это последнее утверждение перед строкой проверки? Будет ли $username содержать нефильтрованные данные в этом случае? Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 10 сентября 2009

Проверка выполняет очистку xss, но она не имеет ничего общего с $this->input->post('username'). Эта строка будет очищать xss автоматически, полностью независимо от ваших средств проверки (при условии, что у вас включена глобальная фильтрация xss). На самом деле, я готов поспорить, что выполнение обоих этих действий на самом деле приведет к очистке xss дважды , потому что я уверен, что проверка просто создает копию массива ... изменить $ _POST.

Но, как я уже сказал, если вы обращаетесь к нему по $this->input->post('username'), он будет очищен независимо.

0 голосов
/ 18 августа 2009

Я очень рекомендую просмотреть system / library / Input.php. Вы можете точно увидеть, как там делается работа.

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

0 голосов
/ 13 августа 2009

из руководства пользователя

«Если встречается что-либо запрещенное, оно становится безопасным путем преобразования данных в символьные объекты»

так что да, после запуска $ this-> input-> post ('username') через проверку формы с параметром xss все грязные данные будут чистыми.

и да, если вы поместите этот оператор перед строкой проверки, он не будет очищен.

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

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