Я установил CKeditor на сайт клиента, который позволяет им вводить текст с помощью редактора WYSIYG.Он заблокирован по большей части, разрешая только полужирный, курсив, неупорядоченные списки и т. Д.
Я также запускаю отправленный пользователем HTML через Очиститель HTML , чтобы убедиться, что он не получит smart и начните пытаться добавлять таблицы, например.Также полезно ограничить то, что они могут вводить, например, для проблем XSS.
Я только что посмотрел на некоторые результаты, полученные с помощью комбинации CKeditor / HTML Purifier, и увидел это злодеяние ...
<p>
<span style="font-size:11px;"><br /></span></p>
Можно ли в любом случае настроить очиститель HTML или использовать что-то еще для удаления элементов без текстового узла?Очевидно, что нужно начинать с самого последнего потомка, а затем запускать дерево DOM, удаляя самого родителя, у которого нет элементов с текстовым узлом.
Есть ли какие-либо крайние случаи для этого подхода, если предположить, что в этой разметке никогда не будет элементов только для презентации?Я не могу представить себе какие-либо самозакрывающиеся элементы (например, изображения, элементы ввода и т. Д.).