用户定义的CSS:什么会出错



所以,对于我正在开发的一个新的社区站点,我们正在考虑允许用户编写他们自己的CSS。也许在他们的个人资料页面上有一个文本区域。然后,当用户浏览网站时,网站就会向浏览器发送CSS。这看起来像是一个相当明显和廉价的定制,但我从来没有见过这样做。

假设我们添加了一些保护措施来防止用户不可挽回地弄乱他们自己的页面,从整个站点的角度来看,是否有任何可能出错的地方?也许是wrt安全?

OWASP有一些关于转义不受信任的CSS的好建议,您可能会考虑。

我建议为用户提供一些一般的外观偏好(字体大小、样式和颜色等),而不是给他们全权委托。这样做的好处是,技术含量较低的用户更容易访问,同时也减少了他们请求技术支持的可能性(不要忘记添加一个"重置样式"按钮,这样他们就可以在不给你发电子邮件的情况下撤销更改)。

任何一个用户,如果能够轻松地覆盖站点范围内的CSS样式,很可能会意识到基于浏览器的站点特定样式表,所以我不认为像你描述的那样提供一个空白样式框有任何真正的优势;如果用户为其他访问者(例如tumblr)设计他们的页面样式,那就更有意义了。

小心ie浏览器,众所周知,它允许javascript代码通过CSS。如果其他人看到这个自定义CSS,这可能是XSS攻击的根源。

除此之外,从安全的角度来看,事情可能还不错。

但是,用户提供的CSS可能很糟糕。而不是让他们直接提供CSS,你可以有一个编辑器让他们选择颜色/大小等,并自己生成所需的CSS。

如果您决定允许任何自定义CSS,请确保您进行了清理。如果你问我的意见,我会投票反对,并使用类似编辑器的方法,就像我上面提到的。

他们可以通过css中的图像标签加载恶意脚本。让人们改变你的网站总是一条危险的道路。

你需要确保你很好地验证了CSS,因为人们肯定会试图找到你的安全漏洞。

我会做一个PHP控制的界面,他们可以改变某些部分。在我看来,这更容易验证,也能让你少睡几个不眠之夜。

我之前通过我们构建的内部CMS允许这种行为,并且没有太大的问题-我们所做的是在他们有权编辑的方面给予他们有限的范围,并且不允许他们做任何与网站整体外观和感觉不一致的事情。

我赶紧补充一下,我们给了他们一个"CSS构建器",而不是直接控制CSS,这在我们的情况下工作得很好(客户端网站,人们很少有网络经验)。

这听起来比实际上更容易——如果他们可以改变字体就好了,尽管在一个多租户网站上,我们有一些使用Times的主字体(我们必须创建一个与该字体相匹配的字体白名单),还有一些使用Arial(再次,一个新的白名单)。

我们发现,使用jquery,我们能够提供一个典型内容页面的伪实时预览,其中包含他们的更改,并且他们可以在飞行中磨练它。

也就是说,我们仍然有客户在他们搞砸的时候联系我们,所以这不是万无一失的。

总结一下:

  • 我可以提倡使用白名单虽然是一种手段限制选择——如果他们在创造主体文本的样式,然后允许24pt字体不太可能是好兆头在用户界面方面。
  • 生活使用尽可能预览,以便他们可以看看会是什么样子建立风格-它可能不会停止愚蠢的人,但它肯定是至少让他们看看他们有多蠢被!:)

除了其他回答中的好评论之外,我想说的是,让用户完全编辑他们的CSS对您的站点来说可能是危险的,并且对于不精通CSS的普通用户来说不会增加太多价值。

那些掌握CSS的人可以简单地使用浏览器扩展(如Stylish,例如)来定制CSS,而无需您的任何努力,也不会给您的站点带来任何安全风险。

因此,我会做一些更高级的事情(允许用户使用一个易于使用的界面来选择颜色、字体等),或者什么都不做。

相关内容

  • 没有找到相关文章

最新更新