首页 > 其他分享 >HTTP 协议学习笔记

HTTP 协议学习笔记

时间:2024-11-14 22:41:09浏览次数:1  
标签:协议 HTTP 请求 首部 报文 笔记 响应 客户端

HTTP 协议学习笔记

带新手走进神秘的HTTP协议 - 超超boy - 博客园

HTTP 首部字段详细介绍 - 超超boy - 博客园

《白帽子讲 web 安全(第二版)》

  • HTTP 默认的端口号为 80,HTTPS 的端口号为 443。

  • HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。 可以使用 Cookie 技术控制客户端状态,得到之前的状态信息。

  • HTTP 0.9 和 1.0 使用非持续连接,HTTP 1.1 使用持续连接( Connection: keep-alive )。

  • Web 工作过程

    • 建立 TCP 连接
    • \(\xrightarrow{请求文档}\)HTTP 请求报文
    • \(\xleftarrow{响应文档}\) HTTP 响应报文
    • 释放 TCP 连接
  • 请求报文

    • 请求报文由开始行、首部行和实体主体组成。
      img

    • HTTP 方法:
      image

      POST 时传递的参数写在内容实体里面。

      • HTTP 方法使用原则和风险:

        方法 使用原则 风险
        GET 只用于对服务器没有副作用(read-only)的操作 不应通过 GET 方法提交敏感数据:日志文件会记录请求的 URL 内容,跳转时还会被 Referer 头携带
        HEAD 同上 在 DDos 攻击中,攻击者可能使用 HEAD 方法发起攻击,让服务器网络出方向带宽不超过告警阈值
        POST 用于可能对服务器有副作用时(如增加、删除、更改数据) -
        PUT/DELETE 用于直接上传和删除文件,如无特殊需求,应当禁用 -
        TRACE 用于诊断调试,生产环境的服务器应当禁用 在 XSS 攻击中可以利用它绕过 Cookie 的 HttpOnly 策略,通过 JavaScript 代码读取带有 HttpOnly 属性的 Cookie 内容
        CONNECT 在客户端和目标地址之间建立一个 TCP 隧道,可用于建立从外网穿透到内网的传输通道 -
        服务器端 获取请求参数时,应当明确指明从 GET 参数还是 POST 参数中获取 攻击者可将原本设计为用 POST 方法提交的操作改用 GET 方法提交,以绕过某些只针对 POST 请求设计的安全策略
    • 首部字段
      • 首部字段重复:未明确,根据浏览器内部处理逻辑不同,结果可能不一致
      • 四种 HTTP 首部字段类型:
        • 通用首部字段: 请求报文和响应报文都会使用的首部。 img

        • 请求首部字段:发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、相应内容相关优先级等信息。image

          User-Agent 头:由客户端指定,在 Web 应用中不能基于 User-Agent 的值来做关键业务逻辑决策。攻击者可能向其中插入 XSS Payload,对后端的日志分析平台实现 XSS 盲打。
          Referer 头:依赖其中的域名做来源校验是可靠的,但是只能信任其域名,而不能信任 URL 级别的内容。

        • 响应首部字段:发送响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。image

        • 实体首部字段:针对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息。

  • 响应报文

    • 响应报文的开始行是状态行。响应中的版本号不一定要与请求中的版本号一样,但大版本号(Major Version)不能高于请求中的大版本号。

      img

    • 状态码用于指示服务器对于该请求的操作结果

      状态码 说明
      100~199 表示已收到请求,但未完成操作,用于通知客户端
      200~299 请求中的操作已成功完成
      300~399 告知客户端执行额外的操作,通常用于跳转
      400~499 客户端请求有错误
      500~599 服务端出错
    • HTTP 响应头通过 \r\n 分割,若请求中的数据出现在响应头中,当这些数据未经服务端严格过滤时,可能产生 HTTP 消息头注入(CRLF 注入),即攻击者使用 \r\n 注入任意的 HTTP 头。

  • Cookie 交互

    • 服务器在响应报文中添加 Set-Cookie 首部字段信息,通知客户端保存 Cookie。
    • 客户端再次发送请求时,在请求报文中加入 Cookie 值后发送。
    • 服务器收到 Cookie 后检查 Cookie 并对比服务器上的记录,得到之前的状态信息。
  • HTTP/2 和 HTTP/3

    • HTTP/2:
      • 应用层与传输层之间增加了二进制分帧层,实现了多路复用。
      • 伪头::authority:method:path:scheme:status(响应)
      • 请求内容被封装在明确长度的数据帧中
      • 使用了 HTTP 反向代理的场景中,如果前后端使用了不一样的 HTTP 版本,可能会出现安全隐患
    • HTTP/3:
      • 使用了基于 UDP 的 QUIC 协议(Quick UDP Internet Connection),免去了 TCP 协议的三次握手。
      • 限制了客户端的收报最小长度,缓解 UDP 反射放大攻击问题。
      • 基于 TLS 短时间内可以复用加密连接的特性,QUIC 可以实现“0-往返”(0-RTT)请求。
  • WebSocket

    • 全双工通信模式,支持 HTTP 代理。
    • 使用 ws(WebSocket) 和 wss (使用了 TLS 的 WebSocket)两种资源标识符,分别默认使用 80 和 443 端口
    • 使用长连接,在认证通过后的通信中无需再携带凭证
    • 在 WebSocket 应用中如果服务端没有校验访问源的机制,将会产生跨站 WebSocket 劫持(Cross-site WebSocket hijacking)问题。
  • Web 页面

    • 文档对象模型(Document Object Model,DOM),Javascript,代码混淆方案

标签:协议,HTTP,请求,首部,报文,笔记,响应,客户端
From: https://www.cnblogs.com/lbh2021/p/18547002

相关文章

  • [豪の学习笔记] 计算机网络#001
    1.1.1-什么是计算机网络计算机网络=通信技术+计算机技术计算机网络就是一种特殊的通信网络定义:计算机网络就是互联的、自治的计算机集合自治:无主从关系互联:互联互通Q:距离远、数量大如何保证互联?通过交换网络互连主机交换节点:路由器或交换机Q:什么是Internet?组成细......
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
    目录文献基本信息序言1发展概况2 重点技术发展2.1人工智能技术2.1.1应用深化2.1.2 作战效能提升2.2 航空技术2.2.1螺旋桨设计创新2.2.2发射回收技术进步2.3 其他相关技术2.3.1远程控制技术探2.3.2 云地控制平台应用3装备系统进展3.1 无人作战飞机3......
  • 什么?还不会HTML的表格标签的运用,今天来带大家了解一下HTML的表格标签,内置4篇整理好的
    HTML表格文章目录HTML表格@[toc]HTML的表格介绍以下是一个简单的HTML表格实例:在线实例表格实例HTML表格和边框属性HTML表格表头更多实例HTML表格标签4篇笔记写笔记1.tr与td的详细讲解2.HTML的table的介绍3.常用的标签4.表格标签首先,先给大家介绍一下什么......
  • MySQL数据库:SQL语言入门 【3】(学习笔记)
    5,TCL—— 事务控制语言(TransactionControlLanguage)     用于数据库的事务管理。(1)事务的概念+作用     事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位,由DBMS(数......
  • MySQL数据库:SQL语言入门 【2】(学习笔记)
    目录 2,DML—— 数据操作语言(DataManipulationLanguage)(1)insert  增加 数据(2)delete 删除 数据    truncate 删除表和数据,再创建一个新表(3)update 修改 数据3,DDL——数据定义语言(DataDefinitionLanguage)(1)create 创建数据库对象(2)drop 删除......
  • MySQL数据库:SQL语言入门 【1】(学习笔记)
    SQL(StructuredQueryLanguage)是结构化查询语言的简称,它是一种数据库查询和程序设计语言,同时也是目前使用最广泛的关系型数据库操作语言。(95%适用于所有关系型数据库)【 SQL是关系型数据库通用的操作语言】在数据库管理系统中,使用SQL语言来实现数据的存取、查询、更新等功能......
  • 生成本地开发环境中的Https SSL证书和私钥的工具:mkcert
    mkcert 是一个用于生成本地开发环境中的SSL证书和私钥的工具。它可以帮助开发者在不需要购买或配置复杂证书颁发机构(CA)的情况下,快速创建受信任的SSL证书。这对于本地开发和测试Web应用非常有用,因为它可以确保HTTPS连接的安全性。特点简单易用:mkcert 提供了一个简单的命令行......
  • ABB AC900F学习笔记331:使用ST做自定义功能块,计算最近60秒的分钟均值和最近60分钟的小
    前面自己学习了在西门子TIA使用SCL编程,施耐德Unity中使用ST编程做分钟均值和小时均值的方法,今晚在家练习了在ABBFreelance中自定义功能块使用ST语言做分钟均值和小时均值。新建项目、插入硬件、仿真器、操作站等不做介绍。新建一个用户功能块池,下面建一个功能块类。功能块类定......
  • 树上启发式合并学习笔记+杂题
    图论系列:前言:欲买桂花同载酒,终不似,少年游。相关题单:戳我一.树上启发式合并前置知识:树的重儿子。1.引入启发式算法是基于人类的经验和直观感觉,对一些算法的优化。(其实就是感觉是对的就是对的),例如并查集的启发式合并,将小集合合并到大集合中。因为在路径压缩的时候,大集合的根......
  • Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件
    本文将介绍一种手动的轻量级的方式,还原HTTP/TLS协议中传输的文件,为流量数据包中的文件分析提供帮助。如果捕获的数据包中存在非文本类文件,例如png,jpg等图片文件,或者word,Excel等office文件异或是其他类型的二进制文件或者编码文件。如果想要了解这些非文本文件中的内容,往往......