用户上传的CSS安全吗?

时间:2011-07-01 22:26:40

标签: css security

使用用户上传的CSS会对网站造成伤害吗?如果我想允许用户上传/分享他们自己的CSS主题到网站,有什么我应该寻找或不允许的吗?

编辑:假设我知道如何检查它是否是有效的CSS文件等。我正在寻找我需要避免的CSS特定漏洞。

4 个答案:

答案 0 :(得分:3)

我相信以标准方式解析的标准CSS是安全的。但是,通过各种非标准扩展CSS is unsafe

不仅仅是CSS不安全,因为有些浏览器会忽略RFC 2616并嗅探内容类型而不是尊重Content-Type标题,因此有可能欺骗某些浏览器嵌入隐藏在静态内的JavaScript图像文件。

即使你解决了这些特殊问题,也没有什么能阻止浏览器供应商在没有你意识到的情况下以其他方式搞砸你。

作为一般规则,我不允许不受信任的用户上传文件,除非我为每个用户提供了自己的子域,并确保主站点上的任何cookie仅限于www主机。这使得浏览器看起来每个用户都有自己独立的站点和独立的安全上下文,所以即使他们设法执行代码,也不会有任何损害。

答案 1 :(得分:2)

它们可以包含一个基本上是Javascript的.htc文件。实际上,它甚至不需要在.htc文件中,你可以使用expression()在CSS中编写Javascript。而且(虽然这是给出的),他们可以通过隐藏/显示不恰当的东西来搞乱你的网站。

答案 2 :(得分:2)

即使您使用有效的CSS解析文件,黑客也可能因使用:before and :after之类的内容而成为恶意软件。为确保安全性,您需要将css属性的一部分列入白名单&验证中的选择器。

答案 3 :(得分:1)

您首先需要注意上传的内容。如果你进行某种健全性检查,它是有效的CSS,你应该没问题,但如果你只是允许上传任何旧文件,有人可能会偷偷摸摸一些java脚本或其他恶意代码。

实际类型没有害处,但整个上传概念是问题,因为它允许攻击者提供您不期望的有效负载。

但我会说,只要你检查安全检查清单并确认你的内容至少是一些css,你应该没问题。