检查/验证用户提供的CSS是否不是邪恶的

时间:2009-11-27 14:22:24

标签: css security checkbox verify

我想允许我的webapp用户通过文本字段保存自定义CSS以修改其GUI的外观。

我想那里有一些邪恶的CSS黑客攻击。我应该注意什么?

6 个答案:

答案 0 :(得分:7)

一种解决方案是通过某些编辑器提供用户选项,允许他们选择各种元素的颜色/大小。然后根据用户提供的选项自己生成CSS。

这样可以防止任何非标准的CSS或您不想使用的CSS被保存。

答案 1 :(得分:3)

我能想到的只有一件事:CSS表达式(然而,仅在IE中进行评估)。这些允许CSS文件中的JavaScript,所以我会删除像

这样的东西
property: expression(...);

或简单地抛出“不允许”错误。

但是,如果你把CSS交还给那些首先放入它的用户,那么他是负责人,如果他自己引入了XSS漏洞的话。

在任何其他情况下:使用Zeus的解决方案。

答案 2 :(得分:2)

如果您允许用户直接在您的网站上添加自定义CSS,则要求黑客接管它。实际上,你使主题系统的可用性降低了,因为只有知道CSS的人才能做到这一点。除非您的网站专门针对基于网络的程序员,否则最好制作一组用户可以选择的主题。

您还可以在网站上创建一组工具,允许用户通过用户界面而不是直接通过CSS更改页面上的特定样式。这将允许更多用户更灵活地设置其页面样式,但这通常需要花费更多的开发时间 - 除非您使用CMS,并且您的特定CMS允许在核心或插件中轻松实现此功能。

希望这有帮助。

答案 3 :(得分:1)

在其他人说的内容中,检查它们是否是有效的CSS:http://jigsaw.w3.org/css-validator/

答案 4 :(得分:1)

虽然我会选择Zeus的答案,但您可以使用CSS解析器(搜索SO,有各种问题)并根据已批准的属性列表检查所有输入(colorbackground,等)。

答案 5 :(得分:0)

如果您的用户可能只修改自己的CSS而不修改其他用户,那么风险是什么? CSS只会提供给他们,所以在最坏的情况下,他们能够自我攻击,不是吗?