Добро пожаловать на сайт SEDBY

Настройка и использование HTMLPurifier

Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.24.2, ЧПУ, Font Face

  • 72 просмотра
  • 15 августа, 2024
  • Обновлено: 15 августа, 2024
  • admin
  • Время чтения: 3 минуты
  • 3 (Подробно)
Настройка и использование HTMLPurifier

HTML Purifier – это стандартизированная PHP-библиотека, предназначенная для решения двух основных задач:

  1. Фильтрация и удаление вредоносного кода (он же XSS или межсайтовый скриптинг).
  2. Приведение HTML контента к стандартам, соответствующим спецификациям W3C.

Необходимость в использовании данной библиотеки, оформленной в виде плагина, возникла после добавления в дистрибутив WYSIWYG-редактора CKEditor и ухода от архаичной BBCodes-разметки. Заметим, что CKEditor используется не только для наполнения страниц, уровень доступа к которому можно ограничить, но и, например в комментариях и форумах, где злоумышленника от адекватного пользователя отличить практически невозможно.

Без HTML Purifier работа с WYSIWYG-контентом становится небезопасной.

С другой стороны, при внимательном рассмотрении становится очевидным, что данная библиотека если и поддерживается, то весьма скудно. Можно предположить, что функционал исчерпан, и двигаться больше некуда, и это отчасти так. Но все же есть нюансы.

Прежде всего, на сайте разработчика последнее обновление 4.9.3 датировано 2017 годом. Вместе с битой ссылкой на отключенный форум это удручает. Общение в Google Group тоже находится в режиме хронически неотвеченных вопросов.

Правда при ближайшем рассмотрении можно обнаружить что библиотека все же обновляется. В разделе загрузок можно обнаружить версию 4.15.0 (она же входит в дистрибутив Cotonti), а распоследнюю 4.17.0 можно скачать с Github-репозитория. Правда ссылка на него почему-то особо не афишируется.

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

Настройка HTMLPurifier

По умолчанию Doctype выставляется в значение HTML5, и это правильно. Однако проекты с длительной историей могут иметь старую дефолтную установку XHTML 1.0 Transitional. Обязательно измените ее на HTML5, иначе столкнетесь с удалением специфичных для стандарта HTML5 тегов. Например, figure + figcaption или picture. Это может быть довольно болезненным для контентщика, незнакомого с конфигурированием Cotonti Siena.

Еще один момент – это преобразование ссылок из относительных в абсолютные. На первый взгляд, это не так уж и важно. Тем не менее, если в перспективе вы планируете использовать ваш ресурс с сервисами типа турбо-страниц от Яндекса, то изображения в вашем фиде не будут выводиться именно из-за относительных ссылок на них. Да и серьезной экономии от использования относительных ссылок в теле страниц вы не добьетесь.

Наша рекомендация – переходите на абсолютные ссылки в контенте.

Две оставшиеся настройки не сильно принципиальны. Уровень того, насколько тщательно HTML Purifier будет исправлять ошибки в контенте можно оставить в дефолтном значении medium. А с допуском зарегистрированных пользователей к вставке iframe-контейнеров с видео от Youtube и Vimeo решайте сами. На наш взгляд, делать этого не стоит.

Окно настроек плагина HTMLPurifier
Окно настроек плагина HTMLPurifier

Выводы и заключение

Плагин HTML Purifier обязательно должен быть установлен в системе вместе с WYSIWYG-редактором. По умолчанию это CKEditor, однако использовать его можно и нужно с любым аналогичным плагином. Наша практика показывает, что неопытные пользователи часто сталкиваются с проблемами, возникающими из-за работы неправильно настроенного HTMLPurifier и просто отключают его. 

Делать это категорически нельзя. 99% всех проблем возникают из-за неправильного значения Doctype в настройках HTML Purifier. Убедитесь в том, что у вас выбран HTML5, и вы сможете использовать в контенте весь арсенал его возможностей.

Аватар

Есть, но немного. Собственно, их две:

  1. Библиотека Tidy (требует предустановленной на сервере libtidy).
  2. HTMLawed (только исправляет некорректную разметку, anti XSS отсутствует).

Все остальное в режиме разработки и для серийного использования не предназначено.

Аватар

Удручает состояние проекта HTML Purifier. Есть ли альтернатива?

Новый комментарий

Имя:
Для редактирования комментария осталось 10 минут
Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость