赞
踩
1、 JSON(JavaScript Object Notation)JavaScript对象表示法
2、 它是一种数据格式,而不是一种编程语言
3、 JSON的语法:
有三种类型的值:简单值,对象,数组;
关于JSON的写法:
表示对象(使用JS的对象字面量书写):
{
“name”:”John”,
“age”:40
}
(属性名必须使用双引号,末尾没有分号结束,允许嵌入书写,也就是值允许为一个对象)
{
“name”:{
“age”:10,
“sex”:’w’},
“address”:”wuhan”
}
表示数组:
[25,”john”,”man” ]—(数组中也可以嵌套对象)
4、 JS提供的JSON全局变量对象
含有2个方法:stringify()和parse(),分别表示将对象转换为JSON和将JSON转化成对象;
使用方法:JSON.stringify(对象)和JSON.parse(字符串);
关于stringify()的过滤序列化:
在第二参数处,传入想要序列化的属性名称数组,则只会有相应的属性名被序列化;
例如:person对象有name,age,sex三个属性
使用JSON.stringify(person,[“name”]);—表示序列化之后返回的字符串只有name属性,也就是{“name”:”…”};
也可以传入函数:function(key,value),如果返回undefined,则表示不进行该项的序列化;
第三个参数表示缩进,传入数字或者字符串,来进行缩进,因为stringify序列化之后的对象字符串不会分行
toJSON()方法:返回其自身的JSON数据格式;
parse()方法第二个参数也可以传入函数,也是key-value;
使用PHP格式化成JSON:
两个函数:
json_encode(对象):将对象转化成json格式数据;
json_decode(字符串):将JSON字符串更换成对象;
(json_decode()第二个参数可以指定true,则返回一个数组)
JSON注入:(一般结合于SQL注入,由JSON注入语句引发SQL注入漏洞)
将传入的json格式的字符串使用json_decode解析相应的数组或者对象,再调用JSON中存储的信息,进行相应的SQL查询;
(上述代码,需要构造的就是$username)
构造相应的伪代码的时候,需要注意对特殊字符的转义;
例如:
进行尝试:
继续进行构造json:
(最终,就可以进行SQL语句的注入。。。。。需要注意的是,在构造的语句中,中间的双引号必须使用转义字符)-------JSON语法中,时要使用双引号的
CSRF:(跨站请求伪造)
原理:利用用户已经登录的状态,诱导用户访问恶意网站,从而实现cookie的盗用,伪造用户身份向目标站点发送请求;
(构造的恶意网站会带有一个向目标服务器发送请求的URL,由于是用户访问恶意网站,从而也就实现了用户会将cookie发送到目标服务器,从而导致恶意的请求)
两种常见的方法:
1、 GET请求的漏洞
以pikachu平台的CSRF为例:
(使用kevin登录,点击修改个人信息)
这里直接点击submit,抓包查看发送的get请求头:
(可以发现sex值对应women等等,刚好与上面的需要修改的信息匹配,构造恶意的链接,将sex的值改为man)
(在同一浏览器访问这个页面,再去查看自身的属性)
会发现sex属性变为了men,也就是引发了CSRF漏洞
2、 使用POST请求
(这个漏洞需要引导用户点击提交表单)
大致原理与上面相似;
抓包分析,请求的字段都是post请求,这里就需要构造表单提交,诱导用户点击表单;(可以使用点击劫持漏洞)
(好像也可以不用引诱,直接使用JS隐藏直接提交表单)
CSRF跨站请求伪造的一个特殊例子:JSON劫持
防御方法:
指定只能从指定的网站跳转访问;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。