网络安全基础--JavaScript转义序列

转义字符是字符的一种间接表示方式。在特殊语境中,无法直接使用字符自身。

例如, "子曰:"学而不思则罔,思而不学则殆。""

由于 JavaScript 已经赋予了双引号为字符串直接量的标识符,如果在字符串中包含双引号,就必须使用转义字符表示:"子曰:\"学而不思则罔,思而不学则殆。\""

如果在一个正常字符前添加反斜杠,JavaScript 会忽略该反斜杠。

例如,document.write ("子曰:\"学\而\不\思\则\罔\, \思\而\不\学\则\殆\。\"")

等价于:document.write("子曰:\"学而不思则罔,思而不学则殆。\"")

JavaScript 定义反斜杠加上字符可以表示字符自身。注意,一些字符加上反斜杠后会表示特殊字符,而不是原字符本身,这些特殊转义字符被称为转义序列,具体说明如下:

JavaScript字符串中的转义序列通常都是基于代码点数字的。JavaScript有多种转义模式,如16进制转义序列、Unicode转义序列、代码点转义序列等

16进制转义序列

最简短的形式称为16进制转义序列,格式为:\x<hex>。 \x为前缀(或者0x),后面跟一个2位的16进制数。比如'\x30'(字符 '0')和'\x5B'(字符 '[')。

八进制转义的工作方式与十六进制转义基本相同,格式为:\x<octal>

Unicode转义序列

如果你想转义整个BMP中的代码点,那就用Unicode转义序列。转义格式为: \u<hex>,\u为前缀,后面跟一个4位的16进制数。比如 '\u0051' (字符 'Q')和'\u222B' (积分符号 '∫')。

代码点转义序列

抽象字符(即文本字符)是用来组织、管理或表现文本数据的信息单位。Unicode中的字符是一个抽象概念。每一个抽象字符都有一个对应的名称,例如LATIN SMALL LETTER A。该抽象字符的图像表现形式(glyph)是a。代码点是指被分配给某个抽象字符的数字,代码点以U+<hex>的形式表示,U+是代表Unicode的前缀,而<hex>是一个16进制数。例如U+0041和U+2603都是代码点。比如'\u{7A}'(字符'z')和'\u{1F639}'(Funny cat符号)。

Unicode的神奇之处就在于将代码点与抽象字符关联起来。例如U+0041对应的抽象字符名为LATIN CAPITAL LETTER A (表现为A),而U+2603对应的抽象字符名为SNOWMAN(表现为?)

在解析字符串时,大多数编程语言都会解码这些js转义。这包括浏览器使用的JavaScript引擎。当注入字符串上下文时,可以使用js转义混淆客户端有效负载。

下表列出了常用JavaScript转义字符:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值