Понимание очистителя HTML

В настоящее время я использую CodeIgniter. У меня есть 4 формы (вход студента, вход в форму, создание учетной записи и запрос учетной записи)

В настоящее время я использую это для фильтрации ввода в одной из форм (создание учетной записи):

function create()
    {
        $this->load->library('bcrypt'); 
        $this->load->library('form_validation');

        $this->form_validation->set_rules('fname', 'First Name', 'trim|required|alpha|max_length[14]');
        $this->form_validation->set_rules('lname', 'Last Name', 'trim|required|alpha|max_length[14]');
        $this->form_validation->set_rules('email', 'Email Address', 'trim|required|is_unique[users.email]|valid_email');
        $this->form_validation->set_rules('username', 'Username', 'trim|is_unique[users.username]|required|alpha_numeric||min_length[4]|max_length[15]');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[7]|alpha_dash|max_length[20]');
        $this->form_validation->set_rules('passwordconf', 'Confirm Password', 'trim|required|min_length[7]|max_length[20]|matches[password]|alpha_dash');

        if($this->form_validation->run() == FALSE)
        {
            $this->view();
        }

Насколько я понимаю, HTML Purifier следует использовать только тогда, когда пользовательские данные будут отображаться/выводиться как HTML в таблице, форуме, блоге (и т. д.). Правильно ли я понимаю это? Я спрашиваю, потому что моя студенческая форма входа будет использоваться для ввода данных в базу данных. Затем моя страница студенческой очереди будет использоваться для ВЫБОРА... ИЗ... этой базы данных. Так что это сбивает меня с толку, так как когда я создаю вывод для студенческой очереди, данные будут размещены в базе данных. это не будет просто опубликовано напрямую.

Итак, в свою очередь ход моих мыслей выглядит следующим образом:

  • Проверяйте данные, чтобы убедиться, что они соответствуют вашим ожиданиям
  • Отфильтруйте данные с помощью xss_clean, как сейчас.
  • Используйте подготовленные запросы PDO для вставки данных в БД
  • (теперь этот шаг меня смущает) Как я должен отображать данные моей базы данных? Должен ли я использовать HTML Purifier на этом этапе?

Извините, если этот вопрос задавали миллион раз, я просто не могу найти то, что ищу. Я не полностью понимаю концепцию очистки HTML.

Редактировать 1: Использование глобального фильтра xss_clean в файле конфигурации.


person RaGe10940    schedule 17.02.2013    source источник
comment
Если данные содержат HTML-код, отправленный пользователем - да   -  person nice ass    schedule 17.02.2013
comment
Правильно, в нем не должно быть html или скриптов. Я буду разрешать только символы aplha_numberic.   -  person RaGe10940    schedule 17.02.2013
comment
Тогда вам не нужен очиститель. Просто отфильтруйте поля и убедитесь, что они содержат только A-Z, 0-9   -  person nice ass    schedule 17.02.2013


Ответы (1)


Очиститель HTML предназначен для случаев, когда у вас есть строка с типом данных HTML, и вы хотите ограничить виды HTML, которые могут в ней появляться.

Однако ни одно из полей, которые у вас есть, не является HTML — это всего лишь строки. Таким образом, чтобы отобразить их, вы просто экранируете строки для отображения в HTML, как и для любой строки.

Более поздние версии CodeIgniter имеют функцию html_escape(). Используйте его в своих представлениях следующим образом:

<p><?=html_escape($mystring)?></p>

Если вы используете более старую версию, используйте htmlspecialchars($mystring, ENT_NOQUOTES, 'utf-8') напрямую. Вероятно, вам следует обернуть это в функцию с одним аргументом.

person Francis Avila    schedule 17.02.2013
comment
Спасибо большое. Я только что получил тот же ответ от одного из парней с htmlpurifier.org, большое спасибо, чувак. - person RaGe10940; 17.02.2013