我正在搜索并发现一些相似的帖子,但没有一个回答我的“特殊”问题。
我所拥有的是页眉和页脚静态设置的页面。中间(内容)可以是来自用户的一些HTML + CSS。
我不想要的是他们定义了一些会破坏页眉,页脚或整个身体的CSS规则。
使用iframe并不是一个真正的解决方案。
由于
答案 0 :(得分:3)
YUI3 CSS Reset代码可以在上下文中工作。
只需输入代码:
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssreset/reset-context-min.css">
在用户的CSS之后添加CSS ,以便最后评估您的CSS。然后,通过为它们提供类似这样的类属性来重置元素上的CSS:
class="yui3-cssreset"
请确保您的声明尽可能具体,并且全部为!important
。
但是为什么你允许用户提供他们自己的CSS?你做知道IE可以解释一个带有一些黑魔法CSS属性的CSS文件中的JavaScript吗?
这样做是不安全的。
答案 1 :(得分:3)
涉及清理输入的最简单的解决方案是将所有样式属性设置为!important标志 - 然后搜索并替换用户可能在其自定义CSS中输入的任何!重要标记。
以下是有关该旗帜的更多信息:http://www.smashingmagazine.com/2010/11/02/the-important-css-declaration-how-and-when-to-use-it/
更简单的解决方案是从用户输入中删除所有标记 - 并且只允许将CSS应用于特定元素的样式属性。
然而,这些解决方案中的任何一个都远非防弹。用户可以简单地创建一个绝对定位的元素来掩盖他们希望的网站的任何部分。如果要停止此操作,您将别无选择,只能智能地解析指定的每个样式属性,并删除可能会损害网站布局的样式属性。这是一个非常微妙的操作 - 假设你可以正确地做到这一点,你所禁用的任何属性都会减少让他们首先编写自己的风格的有用性。
我认为你必须问自己:你真的相信这些用户编写自己的CSS和HTML吗?或者可能是调查textile或降价*的更好选择?如果您确实信任这些用户,那么这不应该是非问题吗?我想有关这些内容性质的更多信息可以帮助我为您提供更合适的解决方案。
*由于StackOverflow垃圾邮件预防措施,我无法发布到主页的直接链接。 Google搜索“markdown”的第一个链接是您可以了解更多信息的地方。遗憾。