Html 监狱内的罪犯<;部门>;?

Html 监狱内的罪犯<;部门>;?,html,xhtml,css-position,css,Html,Xhtml,Css Position,Css,我将设计一个网页,其中包含(s),允许用户使用CSS提交他们的(X)HTML,并插入这些(s) 我知道它会受到XSS的严重影响,所以我将使用HTML净化器来净化(X)HTML和CSS。例如,我绝对不允许、和外部资源。但我希望允许几乎所有其他标签和CSS属性 问题来了。我希望将客户端元素(可视)保存在中。我尝试了部分解决方案,使用position:absolute和溢出:隐藏,如下所示: <html> <head> <style> div#jail { p

我将设计一个网页,其中包含
(s),允许用户使用CSS提交他们的(X)HTML,并插入这些
(s)

我知道它会受到XSS的严重影响,所以我将使用HTML净化器来净化(X)HTML和CSS。例如,我绝对不允许
和外部资源。但我希望允许几乎所有其他标签和CSS属性

问题来了。我希望将客户端元素(可视)保存在
中。我尝试了部分解决方案,使用
position:absolute
溢出:隐藏,如下所示:

<html>
<head>
<style>

div#jail {
  position: absolute;
  overflow: hidden;

  border: 1px dotted red;
  height: 200%; width: 50%;
  left: 25%; top: 25%;
}

/* All client's CSS is ensured prefixed with div#jail */
div#jail .client_code {
  margin: 0;
  position: absolute;
  top: -8px;
  z-index: 1000;
}

</style>
</head>

<body>
<div id="jail">
  <p class="client_code">elements being jailed</p>
</div>
</body>

</html>
因此,是否可以只阻塞
位置:固定,那么监狱将是严厉而有效的


如果有任何其他想法/设计来实现这一点,欢迎任何解决方案!非常感谢

你的标题很吸引人:)@cHao,客户端的CSS将添加前缀
div#jail
。因此,它将成为
div#jail body div#jail{overflow:visible;}
。客户端代码中不允许使用
标记(因为它们在DIV中没有意义)。是的……我重读了这篇文章,注意到:)想知道:你对CSS的解析有多彻底?特别是选择器?我能说
+div
或类似的话吗?这会选择“监狱”之外的东西吗?谢谢你的回复,谢谢你的关注!让我们一起解决这个问题:)这会引起很多麻烦。您确定要允许HTML吗?BBCode或降价似乎更合适。如果你使用HTML,我会使用白名单而不是黑名单。您是否要阻止像
onmouseover
这样的javascript属性?否则用户可以这样做。
div#jail .client_code {
  position: fixed;
  top: 0px;
}