Chinaunix首页 | 论坛 | 博客
  • 博客访问: 268235
  • 博文数量: 99
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 246
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-03 18:23
个人简介

qrasvasdf

文章分类

全部博文(99)

文章存档

2016年(1)

2015年(36)

2014年(62)

我的朋友

分类: 网络与安全

2014-09-29 09:04:01

原文地址:发送http的post请求 作者:Super_Green

    原本以前API接口都是通过GET去获取数据,因为没有要求验证信息,所有把带的参数等信息都可以直接在URL看到,最近要求数据提交采用POST方式,在把原本SHELL通过GET的接口转为POST的情况中了解了一些资料。

一、GET和POST的区别
1、安全性
POST相比与GET来说是相对安全,所谓的相对安全其实POST和GET都是明文传输的,通过抓包还是能看到里面的数据。相对安全是GET只要通过URL就可以看到传输的信息,而POST里面参数数据是存放在HEAD中的。且GET的数据可能被浏览器缓存,他人在看浏览器记录的时候就可能可以获取你的查询的信息和条件。而POST数据不会被缓存,就不会有这种情况出现。
大家就会继续问为什么GET会被缓存而POST不会被缓存了。
GET的本意是获取资源,也就是是一个读的操作,无论你做多少次这样的操作都不会修改查询的数据的状态,因此在这种情况下我们认为GET是安全的,因此GET的内容会被浏览器给记录下来或者Cache服务器给缓存下来。而POST的本意是追加/添加数据,每次进行POST操作,我们都认为修改操作的对象,因此浏览器不会对该数据进行缓存。
2、URL限制
GET的URL长度是有做限制的,标准的URL不存在参数上的限制问题,因此HTTP协议规范也没有对URL长度进行限制,该限制取决于浏览器。
POST里面上是没有限制的,如果说是有限制的话取决于服务器的处理能力。
3、表单数据限制
GET要求一定要为ASCII 类型数据
POST没有任何要求
4、表图为w3s里面的截图


二、如何修改脚本发送http的post请求
原本都是采用GET发送请求,对于要获取的数据直接wget 加具体的URL然后带上参数就可以了,因此想想wget应该也支持POST的HTTP请求
1、wget命令
果不其然,在google查找就有介绍其使用方法;
通过--post-data参数来实现,以下是该网址给的例子:
          wget --save-cookies cookies.txt \
               --post-data 'user=foo&password=bar' \
               
后续在专门整理文章对于wget命令进行详解;
2、curl
除了wget外,curl也是我们常用的访问http的工具,看了下其实现post的http请求为
通过-d参数,把访问参数放在里面,以下是相关例子:
curl --data "data=xxx" example.com/form.cgi
文章:http://www.ruanyifeng.com/blog/2011/09/curl.html 对于curl命令有了很详细的解释,很值得我们去看下,且作者写的博文都把人家觉得很复杂的东西写得很简化明了


阅读(1452) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~