所有浏览器引擎是否将“\ <”视为“>”作为“<" 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引擎仍然把它作为字符串“<脚本>”。但是,我不确定是否所有浏览器都以这种方式处理“>”和“\ <”。这是所有浏览器的标准吗?
答
不,您最好的选择是使用& gt;和& lt;分别为大于和小于符号。
所以,你会想是这样的:
var foo = "</script><script>alert('bug');</script><script>";
仅供参考,Chrome和Safari不这样做,无论是 – cgp 2009-04-30 02:48:28
看到http://jsbin.com/ecefo – cgp 2009-04-30 02:48:40