1

我正在使用 lxml.html.clean 来清理 html。它似乎从所有标签中删除了“样式”属性,出于我的目的,我需要不删除样式属性。

在我开始允许之前,我很想了解在清理 html 时不删除样式属性是否存在任何安全隐患。

专家们对此事的任何见解都将受到高度赞赏。

(请注意,我的应用程序允许最终用户创建保存在后端数据库中的 html,然后在页面上呈现。上面的“干净”可以很好地在保存之前从 html 中删除任何恶意 html(例如 javascript 等)后续渲染)。

每个feedparser HTML 清理网站- 'style' 不在'safe_attrs' 列表中

(另外,如果这是一个行人问题,我很抱歉。我是 html/sanitization 和相关安全方面的新手)

4

1 回答 1

2

在正常情况下,样式本身不是安全风险。但是,在以下几种情况下,恶意样式可能是一种责任:

  • form并且input元素style="display:none"可以在某些浏览器中自动填充数据,导致用户在不知不觉中提交额外的数据。
  • style="display:block"或其他display样式可能会破坏预期的布局inline或其他样式。
  • 如果您的布局引擎想要保持特定的视觉样式,则在style属性中允许样式信息将为作者/海报提供比缩进更多的选择样式的自由度。(如果他们决定要 2000pt 字体怎么办?)
  • 样式属性有时可以通过@import机制加载其他样式,或导致通过background类似属性加载 URL。除非清理器承诺也清理 CSS 代码,否则这将是一个潜在的注入向量。

由于您想要清理的唯一原因是源可能不受信任或不安全,因此假设不希望让源设置自己的样式。

于 2014-03-31T00:05:38.177 回答