[Home]   [TOC]

Study_JavaScript_JSONP  
JSONP
JavaScript, Security, ECMAScript, Unicode
Updated Jan 10, 2015 by jht5...@gmail.com

在ECMAScript的规范里面有这样一段记载。除了0x0A/0x0D以外U+2028/2029也可以作为换行符来使用。

Line Terminator Characters from 7.3 Line Terminators

Code Unit Value Name Formal Name
\u000A Line Feed <LF>
\u000D Carriage Return <CR>
\u2028 Line separator <LS>
\u2029 Paragraph separator <PS>

在IE和chrome中对于【#】后面出现的U+2028/2029不会进行encode而直接包含在URL当中。

<script>
//[U+2028]alert(1)
</script>

行结束符将 C# 源文件的字符划分为行

new-line:(新行:)

  • 回车符 (U+000D)
  • 换行符 (U+000A)
  • 回车符 (U+000D) 后跟换行符 (U+000A)
  • 行分隔符 (U+2028)
  • 段落分隔符 (U+2029)

为了与添加文件尾标记的源代码编辑工具兼容,并能够以正确结束的行序列的形式查看源文件,下列转换按顺序应用到 C# 程序中的每个源文件: 如果源文件的最后一个字符为 Control-Z 字符 (U+001A),则删除此字符。 如果源文件非空并且源文件的最后一个字符不是回车符 (U+000D)、换行符 (U+000A)、行分隔符 (U+2028) 或段落分隔符 (U+2029),则将在源文件的结尾添加一个回车符 (U+000D)。

参考资料

[1]. https://github.com/rack/rack-contrib/blob/master/lib/rack/contrib/jsonp.rb#L23
[2]. http://masatokinugawa.l0.cm/2013/09/u2028u2029.domxss.html zh-CN
[3]. http://msdn.microsoft.com/zh-cn/library/aa664664(v=vs.71).aspx
[4]. http://php-tips.com/2009/11/23/メモ-u2029が含まれるjsonデータをeval関数を使ってデコー/
[5]. http://subtech.g.hatena.ne.jp/mala/20101122/1290436563
[6]. http://qiita.com/kjunichi/items/4c9d0cb408fbc846799f
[7]. http://www.unicode.org/reports/tr13/tr13-9.html
[8]. http://www.ecma-international.org/ecma-262/5.1/
[9]. http://unicode.org/reports/tr14/
[10]. http://en.wikipedia.org/wiki/Newline