代码之家  ›  专栏  ›  技术社区  ›  Dustin Getz sunsations

转义:“var name='</script>'”

  •  0
  • Dustin Getz sunsations  · 技术社区  · 14 年前

    我们的中间层需要采取措施防止 </script> 从javascript字符串中逐字显示。例如,在所有浏览器中,HTML解析器在第一次传递时将忽略javascript上下文,查看第一个关闭脚本,然后查看垃圾,然后查看第二个关闭脚本。见: using-script-in-a-javascript-literal

    <HTML>
    <BODY>
      start
      <SCRIPT>
        alert( "</SCRIPT>" );
      </SCRIPT>
      finish
    </BODY>
    </HTML>
    

    我的第一个想法是将javascript字符串转义的字符扩展为包括“>”和“<”--这在我测试的浏览器中似乎可以工作,但看起来不符合标准: escapesequence.shtml

    编辑:此规则专门用于呈现为javascript字符串文本的内容。

    1 回复  |  直到 14 年前
        1
  •  5
  •   Gumbo    14 年前

    你需要删除文字 </

    "<" + "/"
    "<\/"
    "<\x2F"
    "\x3C/"
    "<\u002F"
    "\u003C/"
    

    description of the CDATA type :

    STYLE SCRIPT 元素使用CDATA作为其数据模型,对于这些元素,用户代理必须以不同的方式处理CDATA。标记和实体必须视为原始文本并按原样传递给应用程序。字符序列的第一次出现“ < “(end tag open delimiter)被视为终止元素内容的结尾。在有效文档中,这将是元素的结束标记。