黑客攻防技术宝典-Web实战篇——第三章、Web应用程序技术(HTTP)(一)

第三章、Web应用程序技术——HTTP(一)

上章提到,这一章包含了web的基础知识,重点为

  • HTTP
  • web功能
  • 编码方案

如果各位有web经验者提出建议,感激不尽。

3.1、HTTP

HTTP(HyberText Transfer Protocol),超文本传输协议。它是访问万维网核心通信协议。最初 用来传输静态文档。后来经过扩展利用,支持web应用程序这种复杂的传输。

HTTP是用于传输HTML文档的应用层协议,它遵循 客户端-服务器 模型:

  1. 客户端与服务器建立连接
  2. 客户端向服务器发出请求
  3. 服务器响应请求返回数据
  4. 客户端与服务器断开连接
    C/S模型

此外,HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据。也就是说请求之间完全独立。
这也是第一章中为什么要用session(会话)和cookie的原因。因为无状态的http协议无法保存用户信息之类的数据。

HTTP消息(报文)

HTTP消息分为两种,请求与响应。每个消息组成:

  • 消息头(header)(一个消息头是其中的一行或多行)
  • 空行
  • 消息主体(可选)

HTTP请求

HTTP请求举例如下:

GET /item/http HTTP/1.1         //请求方法  URL请求资源名称  HTTP版本号
Host: baike.baidu.com           //请求完整URL的主机名
Connection: keep-alive          
Cache-Control: max-age=0    
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36   //客户端系统的概况,浏览器内核等等
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Referer: https://baike.baidu.com/item/http/243074?fr=aladdin
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie:                             //提交浏览器发给用户的参数

HTTP响应

HTTP响应举例如下:

HTTP/1.1 200 OK                     //HTTP版本号  数字状态码  响应状态
Bdpagetype: 3
Bdqid: 0xde99cb9f00006bf2
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8     //消息主体的文档类型
Cxy_all: 
Cxy_ex: 
Date: Sun, 12 Jan 2020 07:38:52 GMT
Is_status: 0
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1                     //指明服务器软件,有时还有服务器所安装模块和系统
Set-Cookie:                         //向浏览器发送一个cookie,在随后的请求中会返回
Set-Cookie: 
Set-Cookie: 
Set-Cookie: 
Set-Cookie: 
Set-Cookie: 
Strict-Transport-Security: max-age=172800
Traceid: 
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

HTTP请求方法

最常用的两种请求方法:GET、POST

GET方法(读取):获取请求的资源,无论获取多少遍都对资源没有副作用。GET请求没有消息主体,因此在消息头后的空白行是没有其他数据
POST方法:执行操作,向服务器发送含参数的消息主体,这会对请求的资源产生副作用。比如点击下单操作,服务器将返回下单之后的内容。

其他请求方法:

扫描二维码关注公众号,回复: 8678785 查看本文章

HEAD:这个请求的功能与GET请求相似,不同之处在于服务器不会再其响应中返回消息主体,因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
TRACE:在返回响应主体中包含请求消息的内容。用于检测是否有代理。
OPTION:用于服务器报告对于某一特定资源的有效HTTP方法。
PUT:试图使用包含在请求主体里的内容,向服务器上传指定资源。渗透人员可以通过上传任意脚本执行来攻击。

URL

URL(Uniform Resource Locator),统一资源定位符。是标识web资源的唯一标识符。
具体格式如下:

protocol://hostname[:port]/[/path]file[?pram=value]

其实正式属于叫做URI(Uniform Resource Identifier),统一资源标识符。有人非要炫耀着这么叫,就给他两巴掌。

HTTP消息头

常用消息头

  • Connection:用于高速通信另一端保持连接还是关闭
  • Content-Encoding:指定消息主体的编码形式
  • Content-Length:规定消息主体的字节长度
  • Content-Type:规定消息主体的内容类型
  • Transfer-Encoding:指定消息主体使用任何编码(块编码)

请求消息头

  • Accept:告诉服务器愿意接受哪些内容
  • Accept-Encoding:告诉服务器客户端愿意接受哪种编码
  • Authorization:用于为一种内置HTTP身份验证向服务器提交证书
  • Cookie:向服务器提交它以前发布的cookie
  • Host:指定现在被请求的完整URL的主机名
  • Referer:用于指示提出当前请求的原始URL
  • User-Agent:提供浏览器的信息

响应消息头

  • Cache-Control: 向浏览器传送缓存指令(如no-cache)
  • Server:提供web服务器软件信息
  • Set-Cookie:用于向浏览器发布cookie,浏览器在随后的请求中返回服务器

要考试了,所以这一节分两次写,溜了溜了

发布了5 篇原创文章 · 获赞 9 · 访问量 2851

猜你喜欢

转载自blog.csdn.net/wwwmeymar/article/details/103945534