什么是安全和不安全的CSS样式(我们将过滤掉哪些内容以及我们允许哪些内容)?

时间:2012-08-04 18:37:26

标签: css regex security xss sanitization

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

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

然而,如果我们将这些内容包含在position:relative的div中,上述内容就不会受到影响。

我也听说有一些可能通过css执行脚本,但我无法回想起或想到任何内容。

所以我的问题出现了:

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

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

我还会考虑一些建议,哪种方法会更好:

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

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

1 个答案:

答案 0 :(得分:0)

您需要定义安全性的含义。如果你的意思是“不要让用户破坏我的布局”,那么我认为你根本不能让用户使用CSS。也许字体,颜色和背景可以让用户改变,但除此之外,你要求麻烦。 (甚至诸如边距和填充之类的东西在任何字段中都可以是“有趣”的,但是在与zindex相结合的情况下也是如此...)作为一般的经验法则,如果有HTML标签(例如<font><i>等等,那么这里也没关系。

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

如果我是你,虽然我会遵循评论者的建议,只是不让人们使用CSS - 如果有一些自定义,你希望用户能够使用代码然后让他们进行这些自定义;但不要让他们输入任意代码。人们总是打破这些过滤器,你不太可能抓住每一个可能的角落。