Alex-GR 5 Опубликовано: 20 октября 2019 Рассказать Опубликовано: 20 октября 2019 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? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 21 октября 2019 Рассказать Опубликовано: 21 октября 2019 Писать нужно в данном случае HTML теги для картинки, а не ББ теги. HTML Purifier проверяет валидность HTML кода, а таком смешанном виде он не валиден. Поэтому нужно использовать не смешанный код, а полностью чистый HTML код. Цитата Ссылка на сообщение Поделиться на других сайтах
Alex-GR 5 Опубликовано: 22 октября 2019 Рассказать Опубликовано: 22 октября 2019 Автор В 21.10.2019 в 13:37, celsoft сказал: Писать нужно в данном случае HTML теги для картинки, а не ББ теги. HTML Purifier проверяет валидность HTML кода, а таком смешанном виде он не валиден. Поэтому нужно использовать не смешанный код, а полностью чистый HTML код. Если мне нужно вставить увеличивающееся по клику изображение - я должен писать HTML код этой конструкции? С <a class="highslide" ... изображение ... и так далее? А вы не пробовали это сделать? Froala Editor не даст этого сделать - добавит не закрытый <a class="highslide" ... Так что это не выход. И потом, почему в тегах div я могу вставлять теги thumb, а в тегах figure - нет? Это явный баг... И решается он 1 строчкой в плагине (уже нашел решение). Было бы неплохо, если бы в следующих резах поправили его... Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 23 октября 2019 Рассказать Опубликовано: 23 октября 2019 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 строчкой в плагине (уже нашел решение). Было бы неплохо, если бы в следующих резах поправили его... Решать нужно правильно и корректно, как вам и написали, а не делать дыру в безопасности сайта. Что вы и успешно сделали своей строчкой в плагине. Цитата Ссылка на сообщение Поделиться на других сайтах
Alex-GR 5 Опубликовано: 23 октября 2019 Рассказать Опубликовано: 23 октября 2019 (изменено) Автор 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 к нему. Не уверен, что это правильно. Изменено 23 октября 2019 пользователем Alex-GR Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 23 октября 2019 Рассказать Опубликовано: 23 октября 2019 2 часа назад, Alex-GR сказал: О какой дыре в безопасности идет речь? Если в файле engine/classes/parse.class.php поменять код: Если я чего то не понимаю - объсните конкретней, а не кидайтесь громкими беспочвенными фразами. Я не даю готовых инструкций для злоумышленников. Если вы считаете что сделали все правильно, это ваш личный собственный выбор. Мое дело вас предупредить, а дальше вы уже делаете свой выбор. Я вас не отговариваю. 2 часа назад, Alex-GR сказал: Теги meta уже вырежет парсер редактора Froala Editor. А мета только для микроразметки используется? Нет. Это управляющий важной информацией код, влияющий на кодировку, на метатеги страницы, и т.д. И его использование просто в тексте новости небезопасно, поэтому его не не может быть, как того же JS. Опасность для сайта не только воровство вашего пароля, но понижение его ранжирования и изменение кодировки и влияние на отображение. А это все может делать тег <meta> Для подобных опасных тегов, при условии что только администратор ведет сайт и он берет на себя полную ответственность существует специальное доп. поле в типом "без фильтрации" 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Alex-GR 5 Опубликовано: 23 октября 2019 Рассказать Опубликовано: 23 октября 2019 Автор 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 для того, чтобы прописывать микроразметку изображений. Это все делается плагином в парсере автоматически. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 23 октября 2019 Рассказать Опубликовано: 23 октября 2019 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 может быть некорректен, поэтому он удаляет сразу текст как невалидный. Вы создали свою тему в разделе "Прием багов". Я вам лишь написал что багов в указаннных вопросах нет, ничего исправляться в данном вопросе не будет. А то что вы решили править под себя плагинами, так это ваш выбор и ваше право, которое никто не собирается оспаривать. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.