包含外部CSS文件安全,还是可以导致代码注入?

Her*_*rms 5 javascript css security xss

我正在开发一个客户将使用的网站,将其嵌入网站的iframe中.我想让他们能够自定义内容的样式,以便它们能够适应他们网站的样式.

我的基本想法是让他们给我一个CSS文件的URL,我应该包含在我提供给他们的页面中以填充iframe.据我所知这是安全的,但我不是特别熟悉CSS(特别是较新的版本),所以我想验证这一点.

有没有人可以构建一个CSS文件,让他们将代码注入我的网站或以其他方式访问我的域名的cookie?这真的很安全,还是我需要提出不同的解决方案?

Mik*_*uel 12

不,它不安全. expression并且-moz-binding是通过CSS在某些浏览器上执行任意脚本执行的已知方法. LiveJournal遭受了非常公开的XSS攻击,这是由于JavaScript嵌入在用户提供的CSS中.

由于Mozilla决定允许通过CSS执行任意JavaScript,因此除了我们所采用的解决方案之外,没有其他可行的解决方案.

来自Caja的攻击向量wiki:

精心设计的CSS样式表可以在某些浏览器上执行全局范围内的未经过规范的javascript.

背景

CSS包括几种用于更改周围标记和执行表达式的机制.

IE有一个允许执行任意javascript的扩展.该expression属性描述于http://msdn2.microsoft.com/en-us/library/ms537634.aspx

使用动态属性的强大功能,现在可以将属性值声明为常量,还可以声明为公式....对于脚本,动态属性可以是任何合法的JScript或Microsoft Visual Basic Sc​​ripting Edition(VBScript)语句. http://msdn2.microsoft.com/en-us/library/ms533503.aspx

binding允许结合至外部指定的脚本 http://developer.mozilla.org/en/docs/CSS:-moz-binding&http://developer.mozilla.org/en/docs/XBL:XBL_1.0_Reference:Elements#binding

-moz-binding 允许通过XML接口进行绑定(也使用数据:URL)

假设

不受信任的代码可以生成样式元素或样式属性,或以其他方式添加任意CSS规则并创建触发这些规则的DOM元素.

版本

IE 5及更高版本(但不是IE 8或更高版本的"标准模式").

Mozilla/Firefox,版本未知.