【发布时间】:2011-09-07 22:01:25
【问题描述】:
我有一个需要执行以下操作的网页:
- 使用 JavaScript 动态创建 HTML 片段
- 打开一个新窗口
- 在新窗口中显示 HTML
我的第一种方法是使用 document.write 将 HTML 复制到窗口中。这在大多数情况下都有效,但是当原始窗口设置为document.domain 时,它会导致 Internet Explorer 出现问题。加上document.write 这些天往往不受欢迎。
所以我的第二种方法是将 HTML 放入隐藏表单中,将表单的目标设置为新窗口,然后发布表单。这意味着我需要服务器上的脚本通过回显 POST 的内容来响应表单。
但这很危险,因为有人可能会提出在内容中包含<script> 标签的请求。 如何避免潜在的 XSS 风险?我想我可以过滤掉像<script> 这样的东西,虽然这看起来很笨拙。如果我在服务器上创建 HTML,我可以对其进行加密,或者添加一些只能在服务器上验证的令牌。但我是在客户端上创建的。
编辑:感谢到目前为止的过滤建议。我可能会选择走这条路,但我想知道:如果我不希望对我创建的 HTML 有任何限制怎么办?有什么方法可以验证文档是由我的页面创建的吗?
【问题讨论】:
标签: javascript html xss