阻止CSS执行JavaScript



在IE7模拟器中的流行网站上添加以下样式属性时,什么也不会发生,但是当我从IE7模拟器中的琐碎网站执行它时,它确实被执行。

>
<body style="width: expression(alert())">

如何防止表达式执行?

作为针对JavaScript的缓解措施,将在 Modern 浏览器中的意外地点注入,请使用内容安全策略。例如,script-src: none;的CSP将拒绝您页面内的所有JavaScript执行,无论其起源于何处。可以设计更细微的策略,以仅允许JavaScript来自特定的URI,或仅具有特定哈希的脚本。

您正在谈论的功能称为 Dynamic Properties,并且不再以IE8的支持。

动态属性(也称为" CSS表达式")不再在Internet Explorer 8及以后在IE8标准模式下支持。该决定是为了符合标准,浏览器性能和安全原因。在IE7模式或IE5模式下,Internet Explorer 8中仍然可以使用动态属性。(有关文档兼容模式的更多信息,请参见定义文档的兼容性。)因为Internet Explorer 8在IE8模式下完全符合级联样式表,所以第2级修订版1(CSS2.1)标准标准,大多数动态属性,以围绕级联作用。不再需要在前版本的Internet Explorer中与样式表(CSS)相关的缺点。通常可以用标准JavaScript替换具有更具体用途的其他动态属性。

最新更新