我們的中間層需要做一些事情,以防止</script>
在javascript字符串中逐字出現。例如,在所有瀏覽器中,第一遍HTML解析器將忽略javascript上下文,查看第一個關閉腳本,然後查看垃圾,然後查看第二個關閉腳本。請參閱:using-script-in-a-javascript-literal轉義:「var name ='</script>'」
<HTML>
<BODY>
start
<SCRIPT>
alert("</SCRIPT>");
</SCRIPT>
finish
</BODY>
</HTML>
我的第一個解決這個問題的想法是擴大我們逃脫的JavaScript字符串包括「>」和「<」的人物 - 這似乎在我測試瀏覽器的工作,但沒有按」 t看看標準兼容:escapesequence.shtml
編輯:這條規則是專門爲呈現爲JavaScript字符串文字的內容。
爲什麼不用'\ /'替換'/'? – rhino 2010-10-18 15:11:59
這似乎是可能導致比解決問題更多的問題。無論如何,''多少次不小心在腳本代碼中結束? – Pointy 2010-10-18 15:13:06
@rhino會弄亂'var x = a/b;'這樣的事情,所以你必須準確地解析Javascript以知道該字符出現在字符串文字中。 – Pointy 2010-10-18 15:13:55