Цель lxml.htm.clean удалить «стиль» из тегов.

Я использую lxml.html.clean для очистки html. Кажется, атрибуты стиля удаляются из всех тегов, и для моих целей мне нужно, чтобы атрибуты стиля не удалялись.

Прежде чем я начну разрешать, я хочу понять, есть ли какие-либо последствия для безопасности, связанные с тем, что атрибуты стиля не удаляются во время очистки html.

Любое понимание этого вопроса от гуру будет высоко оценено.

(обратите внимание, что мое приложение позволяет конечному пользователю создавать HTML-код, который сохраняется в базе данных бэкэнда, а затем отображается на страницах. «Очистка» выше хорошо работает при удалении любого вредоносного HTML-кода (например, javascript и т. д.) из HTML-кода до того, как он будет сохранен для последующего рендеринга).

Согласно веб-сайту очистки HTML для Feedparser — стиль отсутствует в списке "safe_attrs". '

(Кроме того, извините, если это пешеходный вопрос. Я новичок в html/санитизации и связанных с ними аспектах безопасности)


person user1055761    schedule 30.03.2014    source источник
comment
Мне кажется, что это просто параметр, который можно отключить , или это не то, что вы используете?   -  person Two-Bit Alchemist    schedule 31.03.2014
comment
Спасибо Двухбитный! Кажется, что-то нужно отключить, однако мне просто интересно, почему по умолчанию атрибуты «стиль» удаляются - существует ли проблема безопасности для вредоносного кода, использующего этот атрибут? (Я улучшу вопрос, чтобы уточнить)   -  person user1055761    schedule 31.03.2014
comment
Может быть, кто-то другой отзовется об этом. Для моего, э. два бита (глоток), я бы сказал, что это, скорее всего, не безопасность как таковая (сколько вы действительно можете сделать с атрибутами HTML?), поскольку это источник большого количества ненужного хлама. Многие, многие библиотеки JavaScript, расширения браузера и другие вещи могут добавить к этому атрибуту.   -  person Two-Bit Alchemist    schedule 31.03.2014


Ответы (1)


В нормальных условиях стили сами по себе не представляют угрозы безопасности. Однако есть несколько обстоятельств, при которых злонамеренный стиль может быть проблемой:

  • Элементы form и input с style="display:none" могут автоматически заполняться данными в некоторых браузерах, заставляя пользователей неосознанно отправлять дополнительные данные.
  • style="display:block" или другой стиль display может нарушить макет, ожидающий inline или другого стиля.
  • Если ваш механизм компоновки хочет поддерживать определенный визуальный стиль, разрешение информации о стиле в атрибуте style даст авторам/постерам больше свободы выбора стилей, чем отступ. (Что, если они решат, что им нужен шрифт 2000pt?)
  • Атрибуты стиля иногда могут загружать другие стили через механику @import или вызывать загрузку URL-адресов через background и подобные атрибуты. Если дезинфицирующее средство не обязуется также дезинфицировать код CSS, это будет потенциальным вектором для внедрения.

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

person Pi Marillion    schedule 31.03.2014
comment
Хорошо, имеет смысл. Для меня нюансы форматирования не проблема, а вот механику '@' мне нужно прочитать и понять, как настроить для этого очистку css, разрешив при этом атрибуты 'style'. Спасибо ! - person user1055761; 01.04.2014