Есть ли хорошие HTML-фильтры на PHP?

Я сейчас в проекте с интерфейсом PHP. Мы очень обеспокоены безопасностью, потому что у нас будет довольно много пользователей и они станут привлекательной мишенью для хакеров. Наши пользователи могут отправлять содержимое в формате HTML, которое будет видно другим пользователям позже. Это большая проблема, потому что мы уязвимы для всего набора атак XSS. Мы фильтруем как можно лучше, но разнообразие векторов атаки довольно велико.

Итак, я ищу решения для дезинфекции и фильтрации на основе PHP. Коммерческие решения являются прекрасными (даже предпочтительными). В настоящее время мы используем модифицированный очиститель HTML, но мы не удовлетворены результатами.

Каковы некоторые хорошие библиотеки / инструменты, способные фильтровать вредоносные части HTML?

Приятно иметь, например, осведомленность о HTML5, которая станет кошмаром безопасности, когда она будет доступна «в дикой природе».

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

Related of "Есть ли хорошие HTML-фильтры на PHP?"

Проект очистки HTML

Лично у меня были очень хорошие результаты с проектом HTML Purifier

Он очень настраиваемый и имеет огромную базу кода. Единственная проблема – загрузка файлов на ваш сервер.

Вы уверены, что у вас нет проблемы с конфигурацией при установке? Поскольку очиститель не должен пропускать какие-либо теги HTML вообще, если они настроены правильно.

С веб-сайта:

HTML Purifier – это стандартная библиотека фильтров HTML, написанная на PHP. Очиститель HTML не только удалит весь вредоносный код (более известный как XSS) с тщательно проверенным,
безопасный, но разрешенный белый список, он также гарантирует, что ваши документы соответствуют стандартам, что только достижимо с полным знанием спецификаций W3C.
Устали от использования BBCode из-за нынешнего ландшафта дефицитных или
небезопасные HTML-фильтры? Имейте
Редактор WYSIWYG, но так и не смог его использовать? Ищете высококачественные, совместимые со стандартами компоненты с открытым исходным кодом для того приложения, которое вы создаете? Очиститель HTML для вас!

Я написал статью о том, как здесь использовать библиотеку очистителя HTML с CodeIgniter .

Возможно, это поможет с другой попыткой:

// load the config and overide defaults as necessary $config = HTMLPurifier_Config::createDefault(); $config->set('HTML', 'Doctype', 'XHTML 1.0 Transitional'); $config->set('HTML', 'AllowedElements', 'a,em,blockquote,p,strong,pre,code'); $config->set('HTML', 'AllowedAttributes', 'a.href,a.title'); $config->set('HTML', 'TidyLevel', 'light'); 

CodeIgniter имеет отличный XSS-фильтр, вы можете вырвать его из файла system / libraries / Input.php, если хотите, чтобы он был автономной функцией.

kses работает хорошо. Вы можете легко указать, какие элементы разрешать и запрещать, поэтому сделать его «HTML5-aware» просто вопросом установки массива.

WordPress использует его, поэтому я думаю, это довольно безопасно;)

Я действительно могу рекомендовать kses для фильтрации HTML. На самом деле это то, что использует WordPress. Его свободный и открытый источник.

Раньше я использовал этот класс и имел довольно приличный успех: http://www.phpclasses.org/browse/package/2189.html

Вы можете использовать свое текущее решение и добавить iframes с различными базовыми URL-адресами, чтобы показать содержимое. Изменение базового URL-адреса в iframe отключит доступ из внутреннего кода JavaScript на главную страницу. То есть, если ваш URL-адрес – http://www.yoururl.com/thread/500, вы можете использовать его в iframe для отображения контента, например: http // yoururl.com / thread / 500 / coment / 1, http //yoururl.com/thread/500/coment/2.

Базовый URL, который вы можете установить, зависит от конфигурации вашего DNS / хоста.

Это не решение проблемы, но перескакивать, хотя это может быть полезно, пока вы не найдете что-то еще.

Возможно, HTMLPurifier работает, но позвольте мне сказать, что структура папок слишком сложная и напыщенная. Сотни строк комментариев, папка под названием «тест», файл лицензии, файлы read-mes и инфо-файлы, изображения, папка «ДРУГОЙ» для smoketesting (которая является совершенно оскорбительной), дополнения, конфиги, тесты и, прежде всего, около 10 различных режимов совместимости CMS, отзывы на их веб-сайте, полные версии, облегченные версии, хриплый, слегка пухлый, понижающий синдром и полный спектр политически правильных программных вариаций.