2011-06-24 95 views

回答

3

Internet ExplorerFirefox和其他浏览器,你可以通过在url() CSS语句中指定一个javascript: URL在CSS中嵌入的JavaScript。

即使您设法将其过滤掉,攻击者仍可以使用高级CSS完全重新设计页面(包括其所有文本内容)。因此,诱骗用户执行愚蠢行为变得非常容易,这就是XSS的意图。例如,您可以使按钮填充整个窗口并将其文本更改为“点击此处赢取1000美元”。

你可以白名单有选择的几个特性(text-*font-*colorbackground(仅限于颜色和渐变,没有网址或其他花哨的东西)),但你必须拒绝任何不符合这些限制。

+1

可能IE做过最坏的打算。 –

+7

@Amir Raminfar:我认为这将是一个较短的清单,列出哪些IE做对了。我会开始:允许我下载一个真正的浏览器。 – Robert

+0

是否有少量的CSS关键字可以加入黑名单,以防止执行和使用新内容填充元素? – Tom

0

有趣的问题。我可以想象样式表能够删除或隐藏可能成为安全问题的元素。您也可以在使用after:之前的某个元素之后插入文本,以便您可能需要小心。

或者我认为你应该首先包括他们的样式表,以便它们不会突然改变你的所有字体或全局的东西。

+0

首先包含样式表没有任何作用,您可以简单地定义具有更高优先级的规则。 – phihag

+0

这就是我所说的一件好事。如果其他css是#foo div,那么清楚他们是针对那些div。我们使用这种方法,以便我们的默认CSS不会突然改变。 –

+0

我的意思是:**攻击者**可以用更高的优先级来定义规则,只需坚持'!重要的'在每个价值之前。 – phihag

0

这些都是旧的黑客,但可能仍然在旧版浏览器中工作,例如,您可以将javascript协议放在href attr中。

http://ha.ckers.org/xss.html (搜索方式)