HTTP 协议学习笔记

news/2024/11/14 22:47:53/文章来源:https://www.cnblogs.com/lbh2021/p/18547002

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://www.hqwc.cn/news/833683.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自主研发RPA,基于uiautomatorviewer的自动化代码生成器,一键生成Java代码和Cucumber描述文件

介绍 基于UI Automator进行二次开发,让你不懂开发也能编写自动化测试代码, 一边生成代码一边Debug,毫不费力写出完美的自动化测试代码 。该工具集成了Tomcat使得添加新的功能的时候使用HTML+API进行开发,降低了开发难度;集成了Derby数据库,测试用例持久化到数据库。 软件…

关于NVIDIA Jetson AGX Xavier刷机过程记录

刷机记录,再刷机忘记了回来看看~主机电脑安装ubuntu20.04虚拟机,NVIDIA sdkmanager,主机端连上路由器提供的wifi。再将Jetson接上电源,但不开机。拿出附带的typec——USB数据线,typec端连上图中的typec口,USB连上主机电脑。找出一根网线,一端连接Jetson,另一端连接步骤…

shell编程 - 基础篇

1. Shell简介Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。2. Shell编程语言必知必会shell命令解释器:bash编程常用命令解释器.命令解释器bash 目前应用最广泛一…

第四届光学与机器视觉国际学术会议(ICOMV 2025) 2025 4th International Conference on Optics and Machine Vision

第四届光学与机器视觉国际学术会议(ICOMV 2025)2025 4th International Conference on Optics and Machine Vision重要信息官网:https://ais.cn/u/vEbMBz

【os】操作系统是怎样一步步接收键盘按键的?

你有没有想过,按下键盘按键后,相应的字符是怎么一步步显示在屏幕上的? 首先来看硬件部分,你至少应该能想到必须得有键盘和CPU:之后呢,cpu是怎么知道有键盘按下呢? 为了让键盘按下按键后能通知到CPU,需要借助键盘控制器,keyboard controller,这当然也是硬件:当按下按…

Kafka学习day01

Kafka的学习day01-Kafka基础环境的搭建Kafka Centos7环境搭建 1. 安装Zookeeper 1.1 官网下载安装包ZooKeeper官网下载地址1.2 使用Xftp或远程工具将ZooKeeper安装包上传文件到服务器或虚拟机1.3 编写配置文件 进入ZooKeeper安装目录 cd {安装目录}/conf/1.3.1 配置文件模版 # …

从数据到知识,知识中台赋能企业智能化升级

在信息爆炸的时代,企业面临着数据泛滥与知识匮乏的双重挑战。如何将海量的数据转化为有价值的知识,进而驱动企业的智能化升级,已成为企业竞争力的关键。知识中台作为企业数字化转型的核心,正逐渐成为企业智能化升级的新引擎。 一、数据与知识的转化 数据本身并不等同于知识…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现十

审核前台用户认证信息、查看所有用户、订单、发布文章、发布常见问题等。 该系统总共24张表,代码整洁,每个功能、接口上都有注释说明。 运行环境:jdk1.8、mysql5.x、eclipse/idea、maven3.5/3.6 包远程运行的哦。 特色功能:发布课程、学习课程、分享资料、资料讨论等。 部分…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现九

该系统总共24张表,代码整洁,每个功能、接口上都有注释说明。 运行环境:jdk1.8、mysql5.x、eclipse/idea、maven3.5/3.6 包远程运行的哦。 特色功能:发布课程、学习课程、分享资料、资料讨论等。 部分功能:前台课程评论信息控制器Controller、优惠卷信息控制器Controller、…

SharePoint Online页面的一些奇怪参数

前言最近,在查找资料的时候,偶然间发现了一些非常有意思的参数,如下:?env=Embedded or ?env=WebView&wdStartOn=21.正经的SharePoint Online页面2.加了参数的SharePoint Online 页面3.加了另一个参数的SharePoint Online页面结束语相信大家看效果就已经发现了,参数是…

Alpha冲刺(2/14)——2024.11.13

目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录项目运行截图五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表 一、团队成员分工与进度成员 完成的任务 完成的任务时长 剩余…

PS端Flash固化

PS端Flash固化Vivado版本:Vivado2020.2 芯片型号:RFSoC XCZU47DR 前提条件:Vitis工程编译完成,拨码开关拨到PS JTAG模式创建引导镜像 首先右键应用工程系统,点击Create Boot Image。检查镜像工程的文件是否为固化需要的工程文件,点击创建镜像的选项即可完成创建,创建完成…