我想允许我的webapp用户通过文本字段保存自定义CSS以修改其GUI的外观。
我想那里有一些邪恶的CSS黑客攻击。我应该注意什么?
答案 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,有各种问题)并根据已批准的属性列表检查所有输入(color
,background
,等)。
答案 5 :(得分:0)
如果您的用户可能只修改自己的CSS而不修改其他用户,那么风险是什么? CSS只会提供给他们,所以在最坏的情况下,他们能够自我攻击,不是吗?