1

有什么方法可以在 JavaScript 中冻结document.body.innerHTML以便攻击者无法执行以下操作:

<script>document.body.innerHTML = document.body.innerHTML.replace("http://www.example.com/" , "http://abc.org" ); </script>

另外如何冻结document.location?谢谢!

4

3 回答 3

2

不,您不能从 javascript 中锁定 DOM 元素的内容。我怀疑你在这里问错了问题。您可能需要做的是首先插入攻击者用来运行代码的任何漏洞。

  • 清理用户输入以去除标签
  • 清理从数据库插入页面的内容
  • 禁止在应用程序的任何输入中使用 html 标签

这些将是一个很好的起点。

于 2012-06-05T17:36:22.823 回答
1

不,没有办法“冻结”它。您可以通过在页面上不包含第 3 方脚本来防止这种情况。

于 2012-06-05T17:36:39.463 回答
0

好吧,不是 JavaScript。这根本不可能。您的代码应该如何比其他任何代码都更具排他性?

简单的解决方案是编写一个安全页面,该页面对 XSS 来说不是易读的。解析来自外部的所有内容,您的页面将是安全的。

您还可以尝试防止您的网站加载到带有X-Frame-Options标题的框架中。您可以使用包含以下内容的 .htaccess 文件来实现:

<IfModule mod_headers.c>
    # Secure frame optione
    Header always append X-Frame-Options SAMEORIGIN
</IfModule>
于 2012-06-05T17:36:33.370 回答