该利用方式浏览器已修复
0x00 head
最近在慢慢的读《Web 之困》这本书,作者想要传达的知识量真的很大,好几次译者都在下面注释出作者几句话背后所隐含的知识点,这次看到一篇8年前关于JSON Hijacking的文章,很久远却一点也不过时。
0x01 JSON
首先我们讲讲JSON,JSON 全名JavaScript Object Notation (JavaScript对象表示法),是一种轻量级的数据交换格式,没有复杂的语法,格式也简单,现在几乎无处不在。它通过重载大括号 {
操作符的含义来实现(原本大括号代表的是代码块的分界,多条语句的集合)。
当JS碰到语句的情况时,大括号代表着一段嵌入代码块的起始。但当碰到表达式时,大括号的含义就是一个序列化对象的开始。
关于表达式和语句的区别 :JavaScript中:表达式和语句的区别
或者看原文:Expressions versus statements in JavaScript
简单来说,表达式就是必须要有返回值,它可以放在任何需要一个值的地方。而语句是一种行为,一种操作,类似于循环语句(while、for),判断语句 if 等。其中语句是可以用表达式来替换的,最常见的就是用条件运算符(条件表达式)去替换一个 if 判断语句。
下面是一个正确的大括号用作表达式的例子:
var test_