Там какие-либо хорошие PHP являются базирующимися доступными фильтрами HTML?

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

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

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

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

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

12
задан Peter Mortensen 6 December 2010 в 09:31
поделиться

6 ответов

Проект HTML Purifier

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

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

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

С веб-сайта:

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

Я написал статью о том, как использовать библиотеку HTML purifier с 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'); 
7
ответ дан 2 December 2019 в 21:23
поделиться

Лично я думаю, что ваш класс стратегии должен иметь метод "сортировки". Таким образом, он может либо называть std:: сортировать, либо нет, как считает нужным. Является ли частью стратегии сортировки, а также каким образом.

Дариос stable_sort ответ очень хороший, если вы можете им воспользоваться.

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

Для сравнения можно сохранить отображение текущей позиции в исходную позицию, но много работы. В идеале логика должна быть встроена в алгоритм сортировки - а не только в сравнение - и это по существу то, как stable_sort работает.

Другая проблема - в зависимости от контейнера - порядок (скажем) адресов элементов не всегда является порядком элементов.

-121--4746114-

Мы обсуждали этот самый вопрос несколько раз здесь. Возможно, вы найдете здесь полезную информацию:

В чем разница между процессом и потоком

Процесс против потока

Поток и процесс

-121--1039971-

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

2
ответ дан 2 December 2019 в 21:23
поделиться

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

1
ответ дан 2 December 2019 в 21:23
поделиться

Вы можете использовать текущее решение и добавлять фреймы с разными базовыми 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 / хоста.

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

1
ответ дан 2 December 2019 в 21:23
поделиться

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

1
ответ дан 2 December 2019 в 21:23
поделиться

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

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

1
ответ дан 2 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: