[4]-HTTP工作原理

一、HTTp协议基础

1.HTTP协议具体工作流程

  1. HTTP作用
    定义了web客户端请求web页面、服务器发送web页面过程
  2. 客户端连接服务器
    客户端----服务端HTTP端口(默认为80)建立TCP套接字连接
  3. 发送HTTP请求
    通过TCP套接字,发送HTTP请求报文,包含请求行、头部、空行和请求数据4部分
  4. 接受请求,并响应
    web服务器收到请求报文,解析报文,定位请求资源。将资源复本写进套接字,再有客户端读取、解析。
    一个响应也由:状态行、响应头部、空行、响应数据(请求体)4个部分
  5. 释放连接TCP
    若连接模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接
    若连接模式keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求。
  6. 客户端浏览器解析HTML内容
  7. 抓包分析
    以本博客为例,图中,1为建立客户端到服务器建立TCP连接过程,2.为客户机向服务器发送HTTP请求报文的过程,一次类推,结合上述理论,则很容易理解整个过程。
    image-20230116185914015

2.HTTP协议组成结构

  1. 结构总览

    • 请求方法
    • 请求URL
    • HTTP协议及版本
    • 请求头
    • CRLF
    • 内容体
  2. 示例
    本例为请求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]
    
  3. 请求方法
    GET和POST是常见的HTTP方法,还有DELETE、HEAD、OPTIONS、PUT、TRACE,但大多数浏览器只支持GET和POST

  4. 常见报文头属性有很多

3.GET请求和POST请求

  1. 参数传递
    GET直接在URL地址栏后面拼接
    POST放到请求体里

  2. 长度限制
    GET有具体限制,1024KB内
    POST理论上没有,但浏览器会限制

  3. 安全方面
    GET明文显示在URL上
    POST请求体内,安全和私密性较高

  4. 联系
    均属于TCP连接,但具体应用过程有所不同。
    GET产生一个数据包,POST产生两个数据包。
    GET请求:浏览器会把http header和data一并发送,服务器响应200。
    POST请求:浏览器先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200。

  5. 关于POSTGET在响应过程的不同流程
    注意,此处,POST并没有向服务器先发送header再发送data,具体原因还在探究过程中,标记一下。

image-20230116193538668

  1. 注:
    基本对于指令性质的东西都是GET,对于私密性的东西,一般都是POST请求

4.HTTP请求方法和响应代码

  1. 方法

    • GET:获取资源
    • POST:传输内容
    • HEAD:只通过报文头部做通信
    • OPTIONS:询问服务器支持那些方法
    • CONNECT:表示通过那些隧道协议来连接

    其他还有

    • PUT
    • DELETE
    • TRACE
    • LINK
    • UNLINE
  2. 响应代码

    • 1xx:信息状态码,表示接收信息正在处理过程中
    • 2xx:成功状态码,表示信息已经成功处理
    • 3xx:重定向状态码,表示需要进行进一步操作,往往表示一种重定向连接
    • 4xx:客户端错误状态吗,服务器无法处理该请求
    • 5xx,服务器错误状态码,服务器能处理该请求,但发生了某些内部错误

二、安全溯源

1.Web安全起源

  1. Web应用全部建立在HTTP协议之上,是对HTTP协议的实际应用
  2. Web应用在运用HTTP协议过程中,没能做到足够强大的约束,导致攻击者利用薄弱环节进行攻击,从而造成问题

2.Web安全攻防要点

  1. 客户端脚本安全
    • 浏览器安全
    • 跨站脚本攻击(XSS):反射型、存储型、DOM型
    • 跨站点请求伪造(CSRF)
    • 点击劫持(ClickJacking)
    • 网页钓鱼
  2. 服务器端应用安全
    • 认证与会话管理
    • 访问控制
    • 加密算法安全
    • SQL注入攻击:GET注入、POST注入、HTTP头注入
    • 文件上传漏洞
    • Web框架漏洞
    • 拒绝服务攻击(应用层 传输层)
    • 开发语言安全:文化包含漏洞、变量覆盖漏洞、代码执行漏洞
    • Web Server配置安全----远程命令执行
  3. 业务逻辑安全

3.Web安全本质

  1. 根本——信任问题
    即:来自前端的输入是不可信的。
    Web应用在运用HTTP协议过程中,没能做到足够强大的约束,导致攻击者利用薄弱环节进行攻击,从而造成问题
posted @ 2023-01-18 14:17  缪白(Miubai)  阅读(48)  评论(0编辑  收藏  举报