Сначала прочитайте об этом в Drupal API:
Таким образом, check_plain()
кодирует специальные символы, которые имеют особое значение в HTML (например, <
и &
), в простые текстовые объекты (то есть <
и &
соответственно), которые будут переводить их буквально (не интерпретировать как HTML), когда эта строка затем отображается как часть страницы с HTML-разметка. Функция filter_xss()
фильтрует строку HTML для предотвращения уязвимостей межсайтового скриптинга (XSS). Это делает четыре вещи:
- Удаление символов и конструкций, которые могут обмануть браузеры
- Убедиться, что все объекты HTML правильно сформированы
- Убедитесь, что все HTML-теги и атрибуты правильно сформированы.
- Убедитесь, что HTML-теги не содержат URL-адресов с запрещенным протоколом (например, javascript :)
Обе функции используются для очистки данных от пользователей, чтобы убедиться, что любое внедрение пользователя нейтрализуется до того, как данные будут представлены на вашем сайте.
Вы никогда не пропустите одну и ту же строку через оба .
Если вы используете, check_plain()
то строка, переданная функции, должна использоваться как обычный текст (не HTML). Тогда filter_xss()
не нужно, так check_plain()
как всегда будет делать строку простым текстом.
Если вы используете filter_xss()
, то строка, переданная функции, должна быть HTML, и check_plain()
это испортит ее.
Когда я смотрю на шаблон, который вы используете в качестве примера, мне кажется, что все три передаваемых поля print()
получены из содержимого, которое уже очищено и не нуждается в дополнительной очистке.
Однако если вы создаете свой собственный модуль, который собирает пользовательский ввод, не пропуская его через «безопасный» текстовый фильтр, такой как «Фильтрованный HTML» или «Простой», вы должны использовать эти функции в целях санитарии.
filter_xss()
когда вы хотите отфильтровать XSS от потенциально опасного контента (то есть контента от ненадежного пользователя) иcheck_plain()
когда вы хотите экранировать специальные символы HTML из строки