[4]-HTTP工作原理
一、HTTp协议基础
1.HTTP协议具体工作流程
- HTTP作用
定义了web客户端请求web页面、服务器发送web页面过程- 客户端连接服务器
客户端----服务端HTTP端口(默认为80)建立TCP套接字连接- 发送HTTP请求
通过TCP套接字,发送HTTP请求报文,包含请求行、头部、空行和请求数据4部分- 接受请求,并响应
web服务器收到请求报文,解析报文,定位请求资源。将资源复本写进套接字,再有客户端读取、解析。
一个响应也由:状态行、响应头部、空行、响应数据(请求体)4个部分- 释放连接TCP
若连接模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接
若连接模式keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。- 客户端浏览器解析HTML内容
- 抓包分析
以本博客为例,图中,1为建立客户端到服务器建立TCP连接过程,2.为客户机向服务器发送HTTP请求报文的过程,一次类推,结合上述理论,则很容易理解整个过程。
2.HTTP协议组成结构
结构总览
- 请求方法
- 请求URL
- HTTP协议及版本
- 请求头
- CRLF
- 内容体
示例
本例为请求miubai.website/archives/
的HTTP协议数据包,可以清晰看到采用GET
方法,完整的URL
请求为http://miubai.website/archives/
,协议版本号为1.1,关于该协议的进一步解释,期待后期博客单独更新一期解释。Hypertext Transfer Protocol GET /archives/ HTTP/1.1 Host: miubai.website Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: JSESSIONID=node0vqzuv05ieln61fuzyk8hsydmd568.node0 Cookie pair: JSESSIONID=node0vqzuv05ieln61fuzyk8hsydmd568.node0 [Full request URI: http://miubai.website/archives/] [HTTP request 1/2] [Response in frame: 65] [Next request in frame: 71]
请求方法
GET和POST是常见的HTTP方法,还有DELETE、HEAD、OPTIONS、PUT、TRACE,但大多数浏览器只支持GET和POST常见报文头属性有很多
3.GET
请求和POST
请求
参数传递
GET
直接在URL地址栏后面拼接
POST
放到请求体里长度限制
GET
有具体限制,1024KB内
POST
理论上没有,但浏览器会限制安全方面
GET
明文显示在URL上
POST
请求体内,安全和私密性较高联系
均属于TCP连接,但具体应用过程有所不同。
GET
产生一个数据包,POST
产生两个数据包。
对GET
请求:浏览器会把http header和data一并发送,服务器响应200。
对POST
请求:浏览器先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200。关于
POST
和GET
在响应过程的不同流程
注意,此处,POST并没有向服务器先发送header再发送data,具体原因还在探究过程中,标记一下。
- 注:
基本对于指令性质的东西都是GET
,对于私密性的东西,一般都是POST
请求
4.HTTP请求方法和响应代码
方法
GET
:获取资源POST
:传输内容HEAD
:只通过报文头部做通信OPTIONS
:询问服务器支持那些方法CONNECT
:表示通过那些隧道协议来连接其他还有
PUT
DELETE
TRACE
LINK
UNLINE
响应代码
- 1xx:信息状态码,表示接收信息正在处理过程中
- 2xx:成功状态码,表示信息已经成功处理
- 3xx:重定向状态码,表示需要进行进一步操作,往往表示一种重定向连接
- 4xx:客户端错误状态吗,服务器无法处理该请求
- 5xx,服务器错误状态码,服务器能处理该请求,但发生了某些内部错误
二、安全溯源
1.Web安全起源
- Web应用全部建立在HTTP协议之上,是对HTTP协议的实际应用
- Web应用在运用HTTP协议过程中,没能做到足够强大的约束,导致攻击者利用薄弱环节进行攻击,从而造成问题
2.Web安全攻防要点
- 客户端脚本安全
- 浏览器安全
- 跨站脚本攻击(XSS):反射型、存储型、DOM型
- 跨站点请求伪造(CSRF)
- 点击劫持(ClickJacking)
- 网页钓鱼
- 服务器端应用安全
- 认证与会话管理
- 访问控制
- 加密算法安全
- SQL注入攻击:GET注入、POST注入、HTTP头注入
- 文件上传漏洞
- Web框架漏洞
- 拒绝服务攻击(应用层 传输层)
- 开发语言安全:文化包含漏洞、变量覆盖漏洞、代码执行漏洞
- Web Server配置安全----远程命令执行
- 业务逻辑安全
3.Web安全本质
- 根本——信任问题
即:来自前端的输入是不可信的。
Web应用在运用HTTP协议过程中,没能做到足够强大的约束,导致攻击者利用薄弱环节进行攻击,从而造成问题
本文来自博客园,作者:缪白(Miubai),转载请注明原文链接:https://www.cnblogs.com/Miubai-blog/articles/17059725.html