上一篇文章请参考:第一章:基础篇—HTTP请求与响应(1)
第一章:基础篇:HTTP方法、URL、HTTP消息头讲解
1.HTTP的八种方法
HTTP
定义了多种请求方法,来满足各种需求。HTTP/1.0
定义了三种请求方法:GET
、POST
和 HEAD
,到了HTTP/1.1
,新增了五种请求方法:OPTIONS
、PUT
、DELETE
、TRACE
和 CONNECT
。各个请求方法的具体功能如下:
2.常用的两种的方法 GET和POST
GET:从指定的资源 请求数据,用于 获取数据.
POST:向指定的资源 提交要被处理的数据,用于 将数据发送到服务器.
两者之间的区别:
(1).请求参数的区别
GET
请求会把请求的参数拼接在URL
后面,以?
分隔,多个参数之间用&
连接;如果是英文或数字,原样发送,如果是空格或中文,则用Base64编码
POST
请求会把提交的数据放在请求体中,不会在URL
中显示出来
(2).传输数据的大小
GET
: 浏览器和服务器会限制URL的长度,所以传输的数据有限,一般是`2K。
POST
: 由于数据不是
通过URL
传递,所以一般可以传输较大量的数据
(3).数据解析
GET
: 通过Request.QueryString
获取变量的值
POST
: 通过Request.form
获取变量的值
(4).安全性
GET
: 请求参数在URL
后面,可以直接看到,尤其是登录时,如果登录界面被浏览器缓存,其他人就可以通过查看历史记录,拿到账户和密码
POST
: 请求参数在请求体里面传输,无法直接拿到,相对GET
安全性较高;但是通过抓包工具,还是可以看到请求参数的
3.HTTP消息头
消息头包括了请求头和响应头。(什么是响应头请求头?请看前一篇文章:第一章:基础篇—HTTP请求与响应(1))
(1)什么是HTTP消息头?
HTTP消息头
是在,客户端请求(Request)或 服务器 响应(Response)时传递的,位于 请求或响应 的第一行, HTTP消息体(请求或响应的内容)是其后传输。
HTTP消息头
,以明文的字符串格式传送,是以冒号分隔的键/值对,如: Accept-Charset: utf-8,每一个消息头最后以回车符( CR ) 和 换行符( LF )结尾。HTTP消息头结束后,会用一个空白的字段来标识,这样就会出现两个连续的CR-LF。
HTTP消息头
支持自定义, 自定义的专用消息头一般会添加'X-'
前缀。
(2)渗透测试员在攻击Web应用程序时可能遇到的消息头:
- 常用消息头
- Connection:告诉通信的另一端,在完成HTTP传输后是
关闭TCP连接
,还是保持连接
开放以接收其他消息。 - Content-Encoding:为消息主体中的内容指定编码形式 ,一些应用程序用它来 压缩响应以加快速度传输
- Content-Leng
- Content-Type
- Transfer-Encoding
- 请求消息头
- Accept:浏览器接收的数据类型
- Accept-Encoding:浏览器能够接收数据的编码格式
- Accept-Charset:浏览器能够接收的字符集类型
- Authorization:
- Cookie:用户识别(保存用户名)
- Host:主机地址
- If-Modified-Since
- If-None-Match
- Origin
- User-Agent:用户代理,告诉服务器客户端的浏览器信息和操作系统信息
- 响应消息头
- Date:消息生成时间
- Content-type:响应数据的类型
- Transfer-encoding:分块传输
- Last-Modified: Fri, 13 Apr 2018 06:43:31 GMT :服务器记录的文件最后一次修改的时间
- Content-type:响应报文的body的内容类型
- Etag:资源戳,与请求报文的if-none_match配合使用
- Set-Cookie:将Cookie数据发送到浏览器,并要求浏览器进行记录
- Content-Encoding:服务器响应给浏览器的文件的压缩方式
- Content-Language:服务器告诉浏览器响应的语言
- Server:服务器告诉浏览器当前服务器的信息
- Location:重定向的url
4.URL
URL(统一资源定位符)是标识Web资源的唯一标识符
,web浏览器通过URL从web服务器请求页面。
URL格式(带方括号[]的为可选项):scheme://
host[:port#]/path/../
[?query-string`][#anchor]
(1)URL是网页的地址,它从左到右由下述部分组成:
- Internet资源类型(scheme): 定义因特网服务的类型,以下是常见的url-sheme:
http
:超文本传输协议,不加密;
https
:安全超文本传输协议,安全网页,加密所有的信息交换;
ftp
: 文件传输协议,用于文件下载或上传至网站;
file
:您计算机上的文件 - 服务器地址(host):表示请求服务器的
域名
或者ip地址。 - 端口(port):端口号,默认是80, 非必需。
- 路径(path):请求资源的路径(其格式与DOS系统中的格式一样,通常有目录/子目录/文件名这样结构组成)。与端口一样,路径并非总是需要的。
从域名后的最后一个“/”开始到“?”
为止,是文件名部分
,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。文件名部分不是一个URL必须的部分,如果省略,则使用默认的文件名。 - query-string :发送给服务器的数据
- 锚,跟服务器无关,只跟客户端有关
(2)url举例:
http://www.mywebsit.com
/sj/test/test.html
?name=zhangsan&age=18
scheme: http
host: www.mywebsit.com
port: 80
path: sj/test/test.html (注:文件名是test.html)
query-string: name=zhangsan&age=18
参考文章:
https://www.cnblogs.com/jasy/p/12691190.html
https://www.cnblogs.com/jasy/p/12691309.html
https://blog.csdn.net/cy_cai/article/details/9764961
https://blog.csdn.net/qq_43925904/article/details/105938647
https://blog.csdn.net/qq_41076577/article/details/107586507?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242