Есть ли в PHP реализация уценки, подходящая для использования в публичных комментариях?
По сути, он должен разрешать только подмножество синтаксиса уценки (жирный, курсив, ссылки, блочные кавычки, кодовые блоки и списки) и удалять весь встроенный HTML (или, возможно, экранировать его?)
Полагаю, один из вариантов - использовать обычный анализатор уценки и запустить вывод через HTML-очиститель, но есть ли лучший способ сделать это ..?
Мы используем PHP markdown Extra для остальной части сайта, поэтому нам уже пришлось бы использовать вторичный парсер (не «Extra», поскольку такие вещи, как поддержка сносок не нужны). приятнее разбирать только текст *bold*
и иметь все экранированные значения до <a href="etc">
, чем генерировать текст <b>bold</b>
и пытаться отбросить ненужные биты ..
Кроме того, в соответствующей заметке мы используем элемент управления ОМУ для «основного» сайта, но для комментариев, какие еще есть варианты? Предварительный просмотр javascript в WMD приятен, но для него потребуется тот же «стерилизация», что и в процессоре уценки PHP (он не может отображать изображения и т. Д., В противном случае кто-то отправит, а его рабочая уценка «сломается»)
В настоящее время я планирую использовать метод santiser для PHP-разметки -> HTML и отредактировать WMD, чтобы удалить синтаксис изображения / заголовка из showdown.js
- но, похоже, раньше это делалось бесчисленное количество раз ..
В основном:
- Есть ли в PHP "безопасная" реализация уценки?
- Существует ли редактор разметки HTML / javascript, в котором можно легко отключить те же параметры?
Обновление: В итоге я просто запустил вывод markdown()
через Очиститель HTML .
Таким образом, рендеринг Markdown был отделен от санации выходных данных, что намного проще (две в основном неизмененные базы кода), более безопасно (вы не пытаетесь одновременно выполнять рендеринг и санацию) и более гибко (вы можете иметь несколько уровней очистки, скажем, более слабую конфигурацию для доверенного контента и гораздо более строгую версию для публичных комментариев)