1

我想允许用户在我的网站上提交自定义 css。

我知道样式的某些组合可能不安全,例如position:absolute.

然而,如果我们将内容包装在一个带有position:relative.

我还听说有一些通过 css 执行脚本的可能性,但我想不起来或想不起来。

所以我的问题是:

  • 哪些可以被认为是安全的?
  • 什么会进入黑名单?

理想情况下,我将编写我的函数来接受 style="*" 标签的内容,并相应地清理它们。

我也会考虑一些建议,什么方法会更好:

  • 从黑名单中匹配并过滤掉不安全的属性,
  • 或仅允许绕过白名单中包含的那些(尽管列表可能会变得很大)

如果你的火炮有一些广泛的功能 - 这是吐出它的正确地方!:-)

4

1 回答 1

0

您需要定义安全性的含义。如果您的意思是“不要让用户破坏我的布局”,那么我认为您根本不能让用户以 CSS 的方式使用太多。也许字体、颜色和背景可以让用户更改,但除此之外,您就是在自找麻烦。(甚至像边距和填充这样的东西在任何字段中都可以是“有趣”的负值,特别是与 zindex 结合使用时...)作为一般的经验法则,如果它有 HTML 标签(例如<font><i>等),那么这里会没事的。

现在,如果您谈论的是要防止跨站点脚本问题的安全性,那么您需要禁止任何可能执行代码的 css 项目。(例如,如 BoltClock 的评论所示)

如果我是你,虽然我会听从评论者的建议,只是不让人们使用 CSS——如果你希望用户能够对代码进行一些自定义,那么让他们进行这些自定义;但不要让他们输入任意代码。人们总是打破这些过滤器,你不太可能抓住每一个可能的极端情况。

于 2012-08-05T01:15:04.027 回答