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

Is including an external CSS file safe, or could it lead to code injection?

本文关键字:代码 注入 CSS 文件 安全 包含外      更新时间:2023-09-26

我正在做一个网站,客户将通过在他们的网站中嵌入iframe来使用它。我想让他们能够自定义内容的样式,这样他们就可以使它符合他们网站的样式。

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

是否有人可以构建一个CSS文件,让他们注入代码到我的网站或以其他方式获得访问像我的域名的cookie的东西?这真的安全吗,还是我需要想出一个不同的解决方案?

不,不安全。expression-moz-binding是已知的通过CSS在某些浏览器上导致任意脚本执行的方法。LiveJournal遭受了一次非常公开的跨站攻击,原因是用户提供的CSS中嵌入了JavaScript。

随着Mozilla决定允许通过CSS执行任意JavaScript,除了我们所采取的解决方案之外,没有其他可行的解决方案。

来自Caja的攻击向量wiki:

精心制作的CSS样式表可以在某些浏览器的全局作用域中执行未消毒的javascript。

CSS包含了一些改变周围标记和执行表达式的机制。

IE有一个允许执行任意javascript的扩展。expression的性质介绍见http://msdn2.microsoft.com/en-us/library/ms537634.aspx

使用动态属性的强大功能,现在不仅可以将属性值声明为常量,还可以声明为公式. ...对于脚本,动态属性可以是任何合法的JScript或Microsoft Visual Basic scripting 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: #绑定元素

-moz-binding允许通过XML接口绑定(也使用data: URLs)

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

ie5及以上版本(但不能在"标准模式"下使用ie8或以上版本)。

Mozilla/Firefox,版本未知。