Перейти к публикации

HTML Purifier удаляет теги [thumb], [img] и т. д.


Рекомендованные сообщения

HTML Purifier удаляет теги [thumb][/thumb] в такой конструкции:

<figure>
[thumb=|Подпись.]https://site.ru/uploads/posts/2019-10/ris.jpg[/thumb]
<figcaption>Подпись рисунка.</figcaption>
</figure>

Остается:

<figure>
<figcaption>Подпись рисунка.</figcaption>
</figure>

Причем, удаляет thumb только тогда, когда он обернут тегом figure. Если обернуть div-вом - не удаляет.
Как заставить HTML Purifier правильно обрабатывать теги [thumb], и т. д, обернутые в тег figure?

Ссылка на сообщение
Поделиться на других сайтах

Писать нужно в данном случае HTML теги для картинки, а не ББ теги. HTML Purifier проверяет валидность HTML кода, а таком смешанном виде он не валиден. Поэтому нужно использовать не смешанный код, а полностью чистый HTML код.

Ссылка на сообщение
Поделиться на других сайтах
В 21.10.2019 в 13:37, celsoft сказал:

Писать нужно в данном случае HTML теги для картинки, а не ББ теги. HTML Purifier проверяет валидность HTML кода, а таком смешанном виде он не валиден. Поэтому нужно использовать не смешанный код, а полностью чистый HTML код.

Если мне нужно вставить увеличивающееся по клику изображение - я должен писать HTML код этой конструкции? С

<a class="highslide" ... изображение ... и так далее?

А вы не пробовали это сделать? Froala Editor не даст этого сделать - добавит не закрытый <a class="highslide" ...

Так что это не выход.

И потом, почему в тегах div я могу вставлять теги thumb, а в тегах figure - нет?

Это явный баг... И решается он 1 строчкой в плагине (уже нашел решение).

Было бы неплохо, если бы в следующих резах поправили его...

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Alex-GR сказал:

Если мне нужно вставить увеличивающееся по клику изображение - я должен писать HTML код этой конструкции? С


<a class="highslide" ... изображение ... и так далее?

Да.

 

15 часов назад, Alex-GR сказал:

А вы не пробовали это сделать? Froala Editor не даст этого сделать - добавит не закрытый <a class="highslide" ...

Так что это не выход.

Какой незакрытый класс? Все в коде который предназначен для показа уменьшенной копии с увеличением корректно закрыто и валидно. Поэтому вы вставляете некорректный код видимо. Более того редактор Froala Editor сам вставляет картинки именно в виде HTML может, а использовать BB теги или HTML для вставки картинок, указывается в настройках DLE в админпанели. Поэтому утверждать что Froala Editor не поддерживает вставку в виде HTML для уменьшенных картинок некорректно. Таких проблем в DLE нет.

 

15 часов назад, Alex-GR сказал:

И потом, почему в тегах div я могу вставлять теги thumb, а в тегах figure - нет?

Это явный баг...

Потому что изучите HTML стандарты. В div может быть любой обычный текст, а в figure нет. Поэтому никакого бага тут нет. DLE проверяет валидность HTML кода, что является основой в безопасности скрипта и вашего сайта в целом.

 

15 часов назад, Alex-GR сказал:

И решается он 1 строчкой в плагине (уже нашел решение).

Было бы неплохо, если бы в следующих резах поправили его...

Решать нужно правильно и корректно, как вам и написали, а не делать дыру в безопасности сайта. Что вы и успешно сделали своей строчкой в плагине.

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, celsoft сказал:

Какой незакрытый класс? Все в коде который предназначен для показа уменьшенной копии с увеличением корректно закрыто и валидно. Поэтому вы вставляете некорректный код видимо. Более того редактор Froala Editor сам вставляет картинки именно в виде HTML может, а использовать BB теги или HTML для вставки картинок, указывается в настройках DLE в админпанели. Поэтому утверждать что Froala Editor не поддерживает вставку в виде HTML для уменьшенных картинок некорректно. Таких проблем в DLE нет.

Да, здесь я неправ - когда тестировал вставку HTML кода увеличивающегося по клику изображения, забыл закрывающий тег </a>, а редактор его вставлял неправильно.

5 часов назад, celsoft сказал:

Потому что изучите HTML стандарты. В div может быть любой обычный текст, а в figure нет. Поэтому никакого бага тут нет. DLE проверяет валидность HTML кода, что является основой в безопасности скрипта и вашего сайта в целом.

Давайте посмотрим на эту страничку: https://developer.mozilla.org/ru/docs/Web/HTML/Element/figure

HTML-элемент <figure> (Иллюстрация с необязательной подписью) представляет самостоятельный контент, часто с подписью (заголовком), которая указывается с помощью элемента (<figcaption>). Диаграмма и её подпись представляет собой единое целое.

Категории контента:

Основной поток, секционный корень, явный контент

Разрешённое содержимое:

Элемент <figcaption> за которым следует основной поток; или поточный контент за которым следует элемент <figcaption>; или поточный контент.

 

Читаем определение основного потока: https://developer.mozilla.org/ru/docs/Web/Guide/HTML/Content_categories#Основной_поток

Основной поток

Элементы основного потока обычно содержат текст и встроенный контент.

HTML стандарты говорят о том, что в теге <figure> может быть текст.

 

Идем дальше. Версия DLE 13.3. Установлена "с нуля".

<figure>
    <a itemprop="image" itemscope itemtype="https://schema.org/ImageObject" itemprop="url contentUrl" class="highslide" href="https://site.ru/uploads/boxsmall.jpg" target="_blank">
	<img itemprop="url contentUrl" src="https://site.ru/uploads/boxsmall.jpg" alt="Принцип работы советника Setka TLP." class="fr-fic fr-dii">
	<meta itemprop="width" content="300">
	<meta itemprop="height" content="411">
    </a>
    <figcaption>Подпись к картинке.</figcaption>
</figure>

Это валидный код? Теги meta уже вырежет парсер  редактора Froala Editor. Нужно настраивать редактор. Или можно вставить изображение в тегах  thumb, а в парсере DLE переписать код парсинга тега thumb так, чтобы он автоматом добавлял микроразметку к изображению. И не расписывать вручную код каждой картинки, которых на сайте может быть тысячи.

5 часов назад, celsoft сказал:

Решать нужно правильно и корректно, как вам и написали, а не делать дыру в безопасности сайта. Что вы и успешно сделали своей строчкой в плагине.

О какой дыре в безопасности идет речь? Если в файле engine/classes/parse.class.php поменять код:

$def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
на
$def->addElement('figure',   'Block', 'Flow', 'Common');

Если я чего то не понимаю - объсните конкретней, а не кидайтесь громкими беспочвенными фразами.

 

И еще момент. Редактор Froala Editor к каждому изображению добавляет класс.

Объясню подробней. Вствляем 3 изображения в полную новость:

<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii">
<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii">
<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii">

Пока все правильно - редактор добавил к каждому изображению сласс fr-fic fr-dii. Класс fr-dii предназначен для выравнивания по центру, класс fr-fil - выравнивание слева, а класс fr-fir - справа.

Теперь встроенными средствами выравниваем второе изображение справа, а третье - слева. И получаем код:

<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii">
<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii fr-fir">
<img src="http://site.ru/uploads/boxsmall.jpg" class="fr-fic fr-dii fr-fil">

Редактор не удаляет класс fr-dii, а добавляет классы fr-fil и fr-fir к нему. Не уверен, что это правильно.

Изменено пользователем Alex-GR
Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Alex-GR сказал:

О какой дыре в безопасности идет речь? Если в файле engine/classes/parse.class.php поменять код:

Если я чего то не понимаю - объсните конкретней, а не кидайтесь громкими беспочвенными фразами.

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

 

2 часа назад, Alex-GR сказал:

Теги meta уже вырежет парсер  редактора Froala Editor.

А мета только для микроразметки используется? Нет. Это управляющий важной информацией код, влияющий на кодировку, на метатеги страницы, и т.д. И его использование просто в тексте новости небезопасно, поэтому его не не может быть, как того же JS. Опасность для сайта не только воровство вашего пароля, но понижение его ранжирования и изменение кодировки и влияние на отображение. А это все может делать тег <meta>

 

Для подобных опасных тегов, при условии что только администратор ведет сайт и он берет на себя полную ответственность существует специальное доп. поле в типом "без фильтрации"

Ссылка на сообщение
Поделиться на других сайтах
17 минут назад, celsoft сказал:

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

Конечно не даете - для данного случая их просто нет. Если внимательно посмотреть вот на эту часть настроек:

Optional: (figcaption, Flow) | (Flow, figcaption) | Flow

то мы увидим, что для тега figure разрешены или потомки figcaption, Flow, или потомки Flow, figcaption, или потомки Flow.

 

Открываем официальный сайт HTML Purifier  с примерами http://htmlpurifier.org/docs/enduser-customize.html и читаем:

Цитата

Flow - Any number of inline elements, block elements and text, like div

Другими словами, возможны 3 варианта расположения потомков в теге figure:

<figure>
<figcaption></figcaption>
инлайновые элементы, блочные элементы и текст
</figure>

<figure>
инлайновые элементы, блочные элементы и текст
<figcaption></figcaption>
</figure>

<figure>
инлайновые элементы, блочные элементы и текст
</figure>

Но в такой конфигурации парсер почему-то вырезает теги thumb, а если оставить только Flow - то нет.

Где дыра?

 

38 минут назад, celsoft сказал:

А мета только для микроразметки используется? Нет. Это управляющий важной информацией код, влияющий на кодировку, на метатеги страницы, и т.д. И его использование просто в тексте новости небезопасно, поэтому его не не может быть, как того же JS. Опасность для сайта не только воровство вашего пароля, но понижение его ранжирования и изменение кодировки и влияние на отображение. А это все может делать тег <meta>

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

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Alex-GR сказал:

Где дыра?

Я же вам сказал, я не даю готовых инструкций по использованию уязвимостей. Повторю еще раз, уязвимость не равно кража доступа, уязвимости бывают разные. Считаете что у вас все безопасно, ваше право, ваш выбор, и ваши действия. Я вас не отговариваю. Потом просто не приходите сюда с вопросами почему мой сайт взламывают что случилось и что делать и т.д. Это ваш сайт, ваши действия и ваш выбор. Я не буду с ним спорить и вас уговаривать.

 

2 часа назад, Alex-GR сказал:

Но в такой конфигурации парсер почему-то вырезает теги thumb

Как думаете почему? При том что бага в парсере нет. Обратите внимание на то что вы читаете https://developer.mozilla.org/ru/docs/Web/HTML/Element/figure и сравните с оригиналом https://www.w3schools.com/tags/tag_figure.asp и также на mozilla в оригинале https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure

 

Видите разницу? Если нет, то это "кривой перевод на русский" и фраза "tag specifies self-contained content" не означает "представляет самостоятельный контент". Это группировка отдельных самодостаточных элементов. Элементы в FTML могут быть блочными или инлайновыми. Просто набор текста не является элементом, он станет являться таковым внутри блока или инлайна например внутри <div> <p> или <a> и т.д. Не верите мне, изучите примеры, данные в документации. Текст не зря дан в блоках, а не написан просто так. Тег figure группирует элементы. А у вас их нет в том как вы написали, поэтому парсер убирает. Бага здесь нет. И я вам выше ссылку на нормальную документацию, где нормальный перевод, но вам это не интересно, вам лишь бы поспорить. Если бы вы заключили thumb в div ничего бы не вырезалось, потому как все становится валидным, figure группирует div котором в свою очередь текст. Группируются элементы, а элемент верстки отсутвует у вас, он появится только после обработки thumb а может и не появится вообще потому как thumb может быть некорректен, поэтому он удаляет сразу текст как невалидный.

 

Вы создали свою тему в разделе "Прием багов". Я вам лишь написал что багов в указаннных вопросах нет, ничего исправляться в данном вопросе не будет. А то что вы решили править под себя плагинами, так это ваш выбор и ваше право, которое никто не собирается оспаривать.

 

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...