lxml.htm.clean背后的目的是删除' style'来自标签

时间:2014-03-30 22:12:54

标签: python sanitization html-sanitizing lxml.html

我正在使用lxml.html.clean来清理html。它似乎删除了' style'来自所有标签的属性,为了我的目的,我需要不删除样式属性。

在我开始允许之前,我很想知道在清理html时是否有任何安全隐患都没有删除样式属性。

对这一问题的任何见解都会受到高度赞赏。

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

Per feedparser HTML sanitisation web site - ' style'没有列在' safe_attrs'

列表中

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

1 个答案:

答案 0 :(得分:1)

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

    带有form
  • inputstyle="display:none"元素可以在某些浏览器中自动填充数据,从而导致用户无意中提交额外数据。
  • style="display:block"或其他display样式可能会破坏期望inline或其他样式的布局。
  • 如果您的布局引擎想要维护特定的视觉样式,那么在style属性中允许样式信息将为作者/海报提供比选择样式的缩进更多的宽容度。 (如果他们决定要2000pt字体怎么办?)
  • 样式属性有时可以通过@import机制加载其他样式,或者导致通过background和类似属性加载网址。除非清洁剂承诺也对CSS代码进行清理,否则这将成为注射的潜在载体。

由于您想要进行整理的唯一原因是来源可能不受信任或不安全,因此不建议让源设置自己的样式。