有没有办法在JavaScript中冻结document.body.innerHTML?

时间:2012-06-05 17:33:02

标签: javascript html

有没有办法在JavaScript中冻结 document.body.innerHTML ,以便攻击者无法执行以下操作:

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

还有如何冻结document.location?谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

不是用JavaScript。这根本不可能。你的代码应该如何比其他任何代码更独特?

简单的解决方案是编写一个不受XSS欢迎的安全页面。解析来自外部的所有内容,您的页面将是安全的。

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

<IfModule mod_headers.c>
    # Secure frame optione
    Header always append X-Frame-Options SAMEORIGIN
</IfModule>