2

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

我猜那里有一些邪恶的 CSS hacks。我应该注意什么?

4

6 回答 6

7

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

这将防止任何非标准 CSS 或您不希望使用的 CSS 被保存。

于 2009-11-27T14:26:30.310 回答
3

我能想到的只有一件事:CSS 表达式(不过,它只能在 IE 中进行评估)。这些允许在 CSS 文件中使用 JavaScript,所以我会删除类似

property: expression(...);

或者干脆抛出“不允许”错误。

但是,如果您将 CSS 准确地返回给最初放置它的用户,那么如果他自己引入了 XSS 漏洞,他就有责任。

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

于 2009-11-27T14:40:22.403 回答
2

如果您允许用户在您的网站上直接包含定制的 CSS,那么您就是在要求黑客接管它。您实际上是在降低主题系统的可用性,因为只有了解 CSS 的人才能做到这一点。除非您的网站专门针对基于 Web 的程序员,否则最好创建一组用户可以从中选择的主题。

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

希望这可以帮助。

于 2009-11-27T14:36:29.123 回答
1

除其他外,检查它们是否是有效的 CSS:http: //jigsaw.w3.org/css-validator/

于 2009-11-27T14:35:11.870 回答
1

尽管我会寻求 Zeus 的答案,但您可以使用 CSS 解析器(搜索 SO,有各种问题)并根据已批准的属性列表( 、 等)检查所有color输入background

于 2009-11-27T14:39:27.790 回答
0

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

于 2009-11-27T14:33:01.813 回答