Я ищу простую библиотеку PHP, которая помогает фильтровать уязвимости XSS в выводе PHP Markdown. IE PHP Markdown будет анализировать такие вещи, как:
[XSS Vulnerability](javascript:alert('xss'))
Я занимаюсь чтением, и лучшее, что я нашел здесь, было именно этим вопросом.
Хотя HTML-очиститель выглядит как лучшее ( почти единственное ) решение, мне было интересно, есть ли что-нибудь более общее? HTML-очиститель кажется немного надежным, особенно для моих нужд, а также болью для настройки, хотя похоже, что после этого он отлично справится.
Есть ли что-нибудь еще, что может быть немного менее надежным и настраиваемым, но все-таки сделать прочную работу? Или я должен просто копаться и начать пытаться настроить HTML-очиститель для моих нужд?
EDIT FOR CLARITY: Я не хочу вырезать углы или что-то подобное. HTML-очиститель просто предлагает много мелкозернистого контроля и для простого небольшого проекта, который просто контролирует просто не нужен, хотя использование ничего не является также вариантом. Вот откуда я пришел, прося чего-то более простого или менее надежного .
Также последнее замечание, я НЕ ищу предложения использовать htmlspecialchars()
, strip_tags()
или что-нибудь подобное. Я уже запретил вложенный HTML-код в PHP Markdown Extra, дезактивируя его аналогичным образом. Я ищу способы предотвратить уязвимости XSS в PHP Markdown OUTPUT .
Благодарю.
Я никогда не слышал о каком-либо другом инструменте, кроме HTML Purifier , для этого – и у HTML Purifier действительно есть хорошая репутация.
Возможно, это « немного надежный » и « боль для настройки », да; но это также, вероятно, наиболее распространенное и проверенное решение, доступное в PHP ;; и это важные критерии, когда вам нужно выбрать такой важный компонент.
Даже если это означает инвестирование полдня, чтобы настроить его правильно, если бы я был в вашей ситуации, я бы выбрал HTML Purifier.
Нет такой вещи, как слишком надежная. «Санизировать» HTML сложно . Любые углы, которые вы разрезаете, чтобы обработать их более просто, скорее всего, приведут к прорыву эксплойтов. Даже сложный старый HTMLPurifier, обладающий лучшей в своем роде репутацией, имел несколько способов скрывать опасную разметку в прошлом!
Однако, если ваше решение для текстовой разметки способно выводить опасный HTML, то оно является недостаточным и должно быть заменено IMO. Если PHP Markdown позволяет использовать javascript:
URL-адреса, то это довольно печальный, основной недостаток, и я не думаю, что верю, что все получится.
У меня было предложение, и я попросил SO узнать, будет ли он работать, но, к сожалению, он был закрыт и помечен как дубликат этого вопроса.
Мое предложение изменяет код уценки и позволяет использовать только ссылки и источники изображений с http://
, https://
или ftp://
который охватывает все необходимые общие протоколы. Если ссылка не начинается с одной из них, она должна оставаться неизменной на выходе.
HTMLPurifier – прекрасный ответ и, возможно, самое надежное решение.
Также можно использовать Markdown в относительно безопасном режиме, но вы должны использовать его правильно. Подробнее о том, как безопасно использовать Markdown, смотрите здесь . Подробную информацию о том, как его безопасно использовать, см. В ссылке, но короткая версия: важно использовать последнюю версию, установить safe_mode
и установить enable_attributes=False
.