”?" /> ”? - 源码之家" />

所有浏览器引擎是否将“\ <”视为“>”作为“<" and "\>”?

问题描述:

主要的一点,使“<”到“\ <”和“>”到“>”是使避免下面联脚本:所有浏览器引擎是否将“ <”视为“>”作为“<" and ">”?

<script> 
    var foo = "</script><script>alert('bug');</script><script>"; // the value of foo is generated from server 
</script> 

从服务器侧产生foo的字符串值。因此,我们计划将“<”更改为“\ <”,将“>”更改为“>”。 (我知道有说法,“>”应该被转义为“& gt;”中,但它不是在考虑在这种情况下)。

因此,预期的结果是:

<script> 
    var foo = "\</script\>\<script\>alert('bug');\</script\>\<script\>"; // the value of foo is generated from server 
</script> 

对于IE7/8和Firefox的HTML渲染引擎将不把\ <脚本\ >在JavaScript字符串<脚本>标签和JavaScript引擎仍然把它作为字符串“<脚本>”。但是,我不确定是否所有浏览器都以这种方式处理“>”和“\ <”。这是所有浏览器的标准吗?

+0

仅供参考,Chrome和Safari不这样做,无论是 – cgp 2009-04-30 02:48:28

+0

看到http://jsbin.com/ecefo – cgp 2009-04-30 02:48:40

不,您最好的选择是使用& gt;和& lt;分别为大于和小于符号。

所以,你会想是这样的:

var foo = "&lt;/script&gt;&lt;script&gt;alert('bug');&lt;/script&gt;&lt;script&gt;";