为什么我可以在JS中设置样式而不违反内容安全策略的style-src'self'?

时间:2016-04-26 16:16:19

标签: javascript css content-security-policy

style-src设置为'self'会禁用通过style标记或style属性使用内嵌样式。这按预期工作。通过JS添加style元素也被阻止。

但我真的很惊讶我仍然可以设置HTMLElement的{​​{1}}对象的属性。例如,这不会触发CSP违规:

style

这如何防止诸如herehere

所述的攻击

1 个答案:

答案 0 :(得分:2)

大概是因为如果您已经允许脚本注入,那么样式修改是您最不担心的。

样式元素和属性被阻止以防止恶意乱搞,可以在没有 JS的情况下完成。如果有人正在修改DOM本身(而不仅仅是演示文稿),那么无论如何都要严重得多。

您提供的第二个链接与此无关;这个演示不再起作用,但显然它正在做的是链接到一个引用页面,好像它是一个样式表,并使用一个有效的css已经在两个位置的引用页面中种植来处理插入的文本作为图片网址。 CSP与那里不相关,因为攻击来自另一个方向;故意将攻击链接页面设置为允许加载外部样式表。 (我不认为可以在css文件本身的HTTP响应上设置CSP头 - 或者其他文件被视为CSS - 禁止外部链接到它,尽管我可能是错的。)