2015-04-01 53 views
0

我有一个文件a.html,它具有以下内容:内容不会出现在身体

<script> 
var x=document.URL.substring(document.URL.indexOf('#')+1); 
document.write(x); 
alert(document.body.innerHTML); 
</script> 
<body> 

</body> 

当我浏览到a.html#somevalueh;alert(1)</script>,为什么只有"somevalueh;alert(1)"但不是</script>部分出现在身体里面?

我使用铬btw。

+2

你试图实现什么? – argentum47 2015-04-01 09:12:22

+2

我没有想到你的名声会带来这种问题。 – dsharew 2015-04-01 09:14:37

+0

@ argentum47问题已更新 – william007 2015-04-01 09:16:36

回答

0

发生这种情况的原因是</script>标签对浏览器有特殊意义,并且它具有开始标签,所以它正在悄悄丢弃它。

尝试逃离链接直接得到暗示这样的:

<script> 
var x=document.URL.substring(document.URL.indexOf('#')+1); 
document.write(escape(x)); 
alert(document.body.innerHTML); 
</script> 
<body> 

</body> 

这会给你的输出:

somevalueh%3Balert%281%29%3C/script%3E 

逃逸的特殊字符。

更新:
你可能也想试试这个。 只需使用你的HTML,因为它是改变somevalueh;alert(1)</script>somevalueh;<script>alert(1)</script>

然后检查你的网页,你必须看到的<script></script>在你的身体标记。