允许用户编辑CSS是安全的吗?

8
我有一个Web应用程序,我希望允许最终用户通过上传自己的CSS文件来自定义网站的外观。
这样做是否存在任何安全问题?我没有发现任何明显的问题,但考虑到可能会遗漏一些情况,所以想请教一下。
7个回答

10

JavaScript可以在CSS中执行,但必须确保使用了一些过滤器。

我曾经看到过这样的情况:有人在Microsoft控制的网站上覆盖整个页面,用一个透明像素链接到恶意网站。点击任何地方都会触发攻击者的网站出现。

如果用户只能看到自己的CSS,而且他们没有办法让别人查看他们所做的事情,那么这可能是安全的。否则,某种白名单或标记语言将起作用。


1
如果他们正在编辑自己的CSS,他们只能对自己进行XSS攻击,不太令人担忧 :-) - Vinko Vrsalovic
那取决于网站结构。 - n1313
3
对于 IE 浏览器,有一个 expression 属性。 - meder omuraliev
还有一些行为,IE中的[-ms-]behavior和Firefox中的-moz-binding - bobince
这是一个老问题,但我必须问一下。Tumblr为什么这样做?或者他们如何安全地逃脱惩罚? - Quentin Engles
显示剩余3条评论

6
简短回答:不是。IE中的HTC,以及Mozilla中的XBL均有可能成为攻击向量。此类黑客攻击曾在一段时间前袭击了MySpace,盗取了30,000个密码。
来源:Simon Willison,《Web Security Horror Stories》(网站安全恐怖故事

3

比脚本编写问题少得多。 - Sam Becker

2

根据您的服务器和配置,可能可以从CSS文件运行服务器端代码(但是,在我所知道的服务器上,这不是默认行为)。


2

简短回答: 。首先想到的是 MSIE 表达式带来的问题。


2
如果这些CSS文件对所有网站用户都可用,而不仅仅是上传者本人,则存在可能的XSRF向量 - 您可以在CSS中包含指向外部资源的链接,这些资源会对请求它们的用户产生“不良”影响。

你可以通过嵌入图片来更轻松地执行XSRF攻击,这在允许的网站中非常常见。 - Sam Becker

1

如果用户使用自定义CSS将屏幕调整到无法找到重置控件的程度,您可能会遇到客户支持方面的问题。在这种情况下,您作为管理员需要手动进行重置。

针对这种情况,有一个可能的解决方案。安排一个特定的URL来重置样式。例如:

http://mysite.com/users/234234/reset

当用户要修改样式时,建议他记住此URL,如果情况失控,只需按照此URL进行操作。一旦点击,自定义样式将被停用。


2
实际上,正如其他回复所指出的那样,您可以在CSS中执行JavaScript。http://www.slideshare.net/simon/web-security-horror-stories-presentation - jammycakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接