Как стать автором
Обновить

MarkHtml

Время на прочтение 1 мин
Количество просмотров 1.8K
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 15

Комментарии 15

Мне кажется, примеры нужны. Для визуализации, ага. :)
Последнюю ссылку посмотрите, чем не пример.
Имел в виду пример кода.
Ну так в исходниках есть пример кода, как использовать:

include('markhtml.php');
echo markhtml($text);
«Ну так» в исходниках я и сам увижу. Интересно, когда в заметке показано.

Вроде
$markhtml = new MarkHtml;
$result = $markhtml->filter($text);

И
$markhtml = new MarkHtml;
$markhtml->xhtml = true; // вывод в xHTML
$result = $markhtml->filter($text);
фильтровать запрещенное как-то некошерно.
вспомнить хотя бы знаменитый j a v a s c r i p t и аналоги.
плюс введут завтра какой-нибудь новый небезопасный тэг и что?
HTMLPurifier хоть и очень громоздкая библиотека, но мне кажется, что для чистки кода лучше ее использовать.
Спасибо за информацию о интересном продукте. Похоже, что он активно развивается в отличии от Jevix.
Я её вчера как раз смотрел, она конечно очень громоздка, но зато и возможности космические.
Никому не советую использовать данную библиотеку, так как чистить по черному списку небезопасно. Также, автор не написал, сколько их XSS отсюда ha.ckers.org/xss.html отфильтровывает его библиотека.

Единственный надежный способ — разбивать текст на теги, теги на аттрибуты (если требуетс яих тоже фильтровать), отдельно разбивать аттрибут style и прогонять все по белому списку, а затем пересобирать HTML заново. Или загрузить HTML в DOm/XML дерево, и опять-так пройтись по нему белым списком и собрать назад.

А кто не хочет так делать, так и будет ловить XSS'ы и трусливо заменять буквы в слове javasript, ломая ссылки и код программ.
В принципе так и происходит, разбивается на теги и атрибуты, и потом собирается заново. Разве что стили убираются только по простому правилу — наличие открывающей скобки. В итоге хитрые методики внедрения плохого атрибута или тега не срабатывают. Остается проблема с содержимым атрибутов, обнаружил что мой фильтр пропускает такое: <IMG SRC="jav ascript:alert('XSS');"> (вставлена табуляция внутрь слова javascript:), нужно будет протестировать такую конструкцию на различных браузерах, скорее всего это проблема совсем уж старого браузера, но фильтр подправлю, чтобы искал и лишние символы в слове javascript.

Спасибо за ссылку на этот сайт, хороший подбор материала.

Все указанные атаки вполне пройдут «белые» списки, чаще всего проблемы с содержимым атрибутов, или использованием некоторых не безопасных тегов, таких как <script> <style>, которые удаляются и через белый список, и через черный.
оригинальный текст «сообщите мне о ней на»
полученый текст «сообщите мне о&nbsp; ней на&nbsp;»
вопрос, почему после «о» и «на», скрипт ставит &nbsp;?
Это типограф так делает, ставит неразрывный пробел:
— перед последним словом;
— после коротких слов;
— перед частицами: ли, ль, же, ж, бы, б;
— после знака № и §.

webfilin.ru/instruments/typograf/
Хм. На всякий случай, ссылка на Типограф в статье, мягко говоря, ведет не на типограф ;)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории