PHP Markdown XSS Sanitizer - PullRequest
       46

PHP Markdown XSS Sanitizer

5 голосов
/ 19 января 2010

Я ищу простую библиотеку PHP, которая помогает фильтровать уязвимости XSS в выводе PHP Markdown.IE PHP Markdown будет анализировать такие вещи, как:

[XSS Vulnerability](javascript:alert('xss'))

Я немного перечитал, и лучшее, что я нашел по этому вопросу, было этот вопрос.

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

Есть ли что-нибудь еще, что может бытьнемного менее надежный и настраиваемый, но все же делать надежную работу?Или я должен просто покопаться и начать пытаться настроить очиститель HTML для своих нужд?

РЕДАКТИРОВАТЬ ДЛЯ ЯРКОСТИ: Я не собираюсь срезать углы или что-то подобноеHTML Purifier просто предлагает множество мелких элементов управления, а для простого небольшого проекта такой большой контроль просто не требуется, хотя использование ничего также не вариант.Вот откуда я пришел, когда просил что-то проще или менее надежно .

Также последнее замечание, я НЕ ищудля предложений использовать htmlspecialchars(), strip_tags() или что-нибудь подобное.Я уже запретил встраивать HTML в PHP Markdown Extra, обрабатывая его аналогичным образом.Я ищу способы предотвратить XSS-уязвимости в PHP Markdown OUTPUT .

Спасибо.

Ответы [ 4 ]

6 голосов
/ 19 января 2010

Я никогда не слышал о каком-либо другом инструменте, кроме HTML Purifier , для этого - и у HTML Purifier действительно хорошая репутация.

Возможно, это " немного устойчиво " и " боль в настройке ", да; но это также, вероятно, наиболее используемое и протестированное решение, доступное в PHP ;; и это важные критерии, когда нужно выбирать такой важный компонент.

Даже если это означает инвестирование полдня в правильную настройку, если бы я находился в вашей ситуации, я бы, вероятно, выбрал HTML Purifier.

3 голосов
/ 19 января 2010

Нет такой вещи, как слишком крепкая. «Санитарный» HTML - это жесткий . Любые углы, которые вы прорежете для более простой обработки, могут привести к проникновению эксплойтов. Даже сложный старый HTMLPurifier, имеющий лучшую в своем классе репутацию, в прошлом имел несколько способов проникновения через опасную разметку!

Однако, если ваше решение с текстовой разметкой способно выводить опасный HTML, то оно имеет недостатки и должно быть заменено IMO. Если PHP Markdown пропускает javascript: URL-адресов, то это довольно грустный, основной недостаток, и я не думаю, что доверял бы этому, чтобы что-то сделать правильно.

1 голос
/ 21 мая 2013

У меня было предложение, и я попросил SO выяснить, сработает ли оно , но, к сожалению, оно было закрыто и помечено как дубликат этого вопроса.

Мое предложение заключается в изменении кода уценки и разрешении начинать только с ссылок и источников изображений с http://, https:// или ftp://, что охватывает все необходимые общие протоколы. Если ссылка не начинается с одного из них, то в выходных данных ее следует оставить без изменений.

0 голосов
/ 07 мая 2012

HTMLPurifier - хороший ответ и, возможно, самое надежное решение.

Также возможно использовать Markdown относительно безопасным способом, но вы должны использовать его правильно.Подробнее о том, как безопасно использовать Markdown, смотрите здесь .См. Ссылку для получения подробной информации о том, как использовать его безопасно, но краткая версия: важно использовать последнюю версию, установить safe_mode и установить enable_attributes=False.

...