Dus*_*etz 0 javascript xss escaping
我们的中间层需要做一些事情来防止</script>在javascript字符串中逐字出现.例如,在所有浏览器中,HTML解析器在其第一次传递中将忽略javascript上下文,请参阅第一个关闭脚本,然后查看垃圾,然后查看第二个关闭脚本.请参阅:using-script-in-a-javascript-literal
<HTML>
<BODY>
start
<SCRIPT>
alert( "</SCRIPT>" );
</SCRIPT>
finish
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
我解决这个问题的第一个想法是将我们为javascript字符串转义的字符扩展为包含">"和"<" - 这似乎适用于我测试的浏览器,但看起来并不符合标准:escapesequence.shtml
编辑:此规则专门用于呈现为javascript字符串文字的内容.
你需要以</某种方式删除文字:
"<" + "/"
"<\/"
"<\x2F"
"\x3C/"
"<\u002F"
"\u003C/"
Run Code Online (Sandbox Code Playgroud)
请参阅CDATA类型的说明:
虽然
STYLE和SCRIPT元素使用CDATA作为其数据模型,但对于这些元素,CDATA必须由用户代理以不同方式处理.必须将标记和实体视为原始文本并按原样传递给应用程序.第一次出现的字符序列"</"(结束标记打开定界符)被视为终止元素内容的结尾.在有效文档中,这将是元素的结束标记.