2014-03-30 4 views
1

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

Перед тем, как начать позволяя, я заинтересован, чтобы понять, есть ли какие-либо последствия для безопасности вокруг не вынимая атрибуты стиля во время санобработки HTML.

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

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

Per feedparser HTML sanitisation web site - «стиль» нет в списке «safe_attrs»

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

+0

Мне кажется, что это просто [опция, которую вы можете отключить] (http://lxml.de/api/lxml.html.clean.Cleaner-class.html), или это не то, что вы используете ? –

+0

Спасибо, бит! Кажется, что-то, что отключено, однако мне просто интересно, почему по умолчанию атрибуты «стиль» удалены - есть ли проблема безопасности для вредоносного кода, чтобы использовать этот атрибут? (Я усилю вопрос, чтобы уточнить) – user1055761

+0

Может быть, кто-то еще включит это. Для моего, э-э. два бита (gulp), я бы сказал, что это, вероятно, не _security_ per se (сколько вы действительно можете сделать с атрибутами HTML?), так как это источник большого количества ненужных трещин. В этот атрибут можно добавить много, многие библиотеки JavaScript, расширения браузера и другие вещи. –

ответ

1

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

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

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

+0

Хорошо, имеет смысл. Для меня форматирование нюансов - это не проблема, но механик «@» - это то, что мне нужно прочитать и понять, как настроить очистку css для этого, позволяя атрибуты «style». Благодаря ! – user1055761