CSRF跨站点请求伪造

来源:互联网 发布:识别色块 算法 opencv 编辑:程序博客网 时间:2024/05/13 22:01

阅读《web前端技术揭秘》的学习总结

Cross Site Request

1.概述

跨站点请求的来源:其他站点。例如,目标网站的删除文章功能接收到来自恶意网站客户端发出的删除文章请求,这个请求就是跨站点的请求。

请求是伪造的,不是用户的意愿

CSRF:
GET请求
目标网站:www.a.com 有一个删除文章的功能,连接是www.a.com/blog/del?id=1,id代表不同的文章
恶意网站:www.b.com

1.在恶意网站B上编写一个CSRF页面,代码<img src=http://www.a.com/blog/del?id=1 />
2.欺骗已登录目标网站A的用户访问www.b.com/csrf.html页面

关键点:跨域发出了一个GET请求,可以无JScript参与、请求是身份认证后的
实际上由客户端HTML标签等发出的跨域GET请求是合法的,不在同源策略的限制中

POST请求
目标网站A的写文章功能是一个提交表单的惭怍,会发起POST请求。
1.在恶意网站B上编写一个用JS自动生成的表单的CSRF页面,表单的action地址指向网站A的“写文章”表单提交地址
2.欺骗已登录目标网站A的用户访问www.b.com/csrf.html页面,这时一个跨域的伪造的POST表单请求带上了目标网站A的用户Cookie被发出

2.类型

按攻击方式分为:HTML CSRF攻击、JSON HiJacking攻击和Flash CSRF攻击等

1.HTML CSRF攻击

发起的csrf请求都属于HTML元素发出的。HTML能够设置src/href等链接地址的标签发起一个GET请求:
<link href="">
<img src="">
<meta http-equiv="refresh" content="0; url=">
<table background="">
........
CSS样式中的:
@import ""
background:url("")
....
通过JS动态生成的标签对象或CSS对象发起的GET请求,而发出POST请求只能通过form表单提交

2.JSON HiJacking攻击

对AJAX响应中最常见的JSON数据类型进行的劫持攻击。网站发出的AJAX请求,响应回来的数据是JSON格式
1)字典格式
{
“id”:1,
“name”:“foo”,
“email”:“foo@gmail.com”
}
2)列表格式
["foo","xoo","coo"]   
参考文章:http://blog.csdn.net/tenfyguo/article/details/6024851

3.Flash CSRF攻击

Flash同样遵循同源策略、发起的CSRF攻击是通过ActionScript脚本完成
1.跨域获取隐私数据
如果目标网站的根目录下存在crossdomin.xml文件,配置如下:
<?xml version="1.0"?>
<cross-domin-policy>
<allow-access-from domin="*" />   表示允许任何域的Flash请求本域的资源
</cross-domin-policy>
恶意Flash的ActionScript脚本:
import flash.net.*;  //请求隐私数据所在的页面
var loader=new URLLoader(new URLRequest("http://www/foo/com/private"));
loader.addEventListener(Event.COMPLETE,function(){//当请求完成后
loader.data;   //获取隐私数据
})
loader.load();//发起请求

2.跨域提交数据操作,如添加、删除、编辑等
如上文发起的HTML POST请求,提交成功后会有JSON文件返回,并提示下载,这样攻击就暴露了。可以通过Flash来进行使更隐蔽

3.CSRF有何危害

1.篡改目标网站的用户数据
2.盗取用户隐私数据
3.传播CSRF蠕虫
4.作为其他攻击向量的辅助手法
0 0
原创粉丝点击