ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《图解HTTP》

2020-10-18 22:02:30  阅读:172  来源: 互联网

标签:web HTTP 请求 首部 报文 服务器 图解


图解HTTP

web及网络基础

http1.0

http1.1

TCP/IP协议族

  • IP协议
    • 作用:把各种数据包传送给对方
      • IP地址
        • 指明节点被分配到的地址
      • MAC地址
        • 网卡所属的固定地址
        • ARP协议依赖MAC地址进行通信
  • TCP协议
    • 提供字节流服务:将大块数据分割为报文段进行传输
    • 三次握手
      • SYN
      • SYN/ACK
      • ACK
  • DNS服务

URI(统一资源标识符)

  • 格式
    • 登录信息()
    • 服务器地址
    • 服务器端口号
    • 带层次的文件路径
    • 查询字符串
    • 片段标识符

URL(统一资源定位符)

简单的HTTP协议1.1

持久连接问题

  • HTTP keep-alive
    • 解决了:HTTP每通信一次就断开TCP连接的问题
  • 管线化
    • 无需等待响应,可并行发送多个请求

无状态协议

  • 每次http通信都需要重新验证用户身份
  • 解决方法:cookie技术
    • 服务器响应报文中的Set-Cookie通知客户端保存Cookie

请求URI

  • 不是访问特定资源而是对服务器本身发起的请求使用 * 代替URI

请求与响应间的通信

  • 方法(报文中起始行的开头)
    • 注:方法名区分大小写
    • GET(获取资源)
    • POST(传输实体主体)
    • PUT(传输文件)
      • 自身不带验证机制
    • HEAD(获得报文首部)
      • 用于确认URI的有效性
    • DELETE(删除资源)
      • 自身不带验证机制
    • OPTIONS(询问支持的方法)
    • TRACE(追踪路径)
      • 确认连接过程中发生的一系列操作
        • XST(跨站追踪)攻击
    • CONNECT(要求用隧道协议连接代理)
      • 实现用隧道协议进行TCP通信
        • TLS协议
        • SSL协议
        • 格式:CONNECT 代理服务器名 :端口号 HTTP版本

HTTP报文的HTTP信息

概念

  • 报文
    • HTTP协议交互的信息
      • 报文首部
      • 报文主体
    • 注:报文首部与报文主体用 CR + LF (回车+换行)实现空行,十六进制为 0x0d 和 0x0a
  • 实体
    • 实体首部
    • 实体主体

编码提升传输速率

  • 内容编码
    • 实体信息原样压缩
      • gzip
      • deflate(zlib)
      • identity(不进行编码)
  • 分块传输编码
    • 把大量数据分割成块

多部分对象集合

范围请求

内容协商

http报文的组成

HTTP状态码

注:状态码经常与状态不一致

1xx

  • 信息性状态码

2xx

  • 成功状态码
    • 200
    • 204
      • 没有资源返回
    • 206
      • 表客户端进行了范围请求

3xx

  • 重定向状态码
    • 301
      • 永久URI更新
    • 302
      • 临时URI更新
    • 303
    • 307
  • 304
    • (不属于重定向)表客户端未满足访问条件

4xx

  • 客户端错误状态码
    • 400
      • 请求报文中有语法错误
    • 401
      • 发送的请求未通过HTTP认证
    • 403
      • 服务器拒绝访问
    • 404
      • 服务器上没有请求的资源

5xx

  • 服务器错误状态码
    • 500
      • 服务器本身发生错误
    • 503
      • 服务器超负荷或停机

与HTTP协作的web服务器

单个主机托管多个域名

  • 多个域名指向同一ip地址,请求访问时需在Host中指明完整的主机名或域名的URL

通信数据转发

  • 代理
    • 不改变请求URL
    • 通过代理服务器的请求或响应会追加写入Via首部信息
    • 分类1
      • 缓存代理(Caching proxy)
        • 将资源副本保存在服务器上
      • 透明代理(Transparent proxy)
        • 不对报文做任何加工
    • 分类2
      • 正向代理
        • 目标服务器是不知道真正的客户端是谁
        • 客户端知道代理服务器和web服务器的存在
        • 可以隐藏客户端真实IP
      • 反向代理
        • 客户端是不知道真正的目标服务器是谁
        • 客户端不知道web服务器的存在
        • 隐藏服务器真实IP
  • 网关
    • 能使通信线路上的服务器提供非HTTP协议服务
    • 提高通信的安全性
  • 隧道
    • 实现远距离的安全通信
    • SSL加密

HTTP首部

请求报文

  • 方法
  • URI
  • HTTP版本
  • HTTP首部字段

响应报文

  • HTTP版本
  • 状态码
  • HTTP首部字段

HTTP首部字段

  • 实际用途分类
    • 通用首部字段
    • 请求
    • 响应
    • 实体
  • 缓存代理/非缓存代理
    • 端到端首部(End-to-end Header)
      • 此类别中的首部会转发给最终的接收目标,且必须保存在由缓存生成的响应中,另外规定,它必须被转发
    • 逐跳首部(Hop-by-hop Header)
      • 只对单次转发有效,会因通过缓存或代理而不再转发
        • Connection
        • Keep-Alive
        • Proxy-Authenticate
        • Proxy-Authorization
        • Trailer
        • TE
        • Transfer-Encoding
        • Upgrade
        • 注:除以上8个,其他都属于端到端
  • 为Cookie服务的首部字段
    • Set-Cookie(响应首部字段)
      • 属性
        • NAME=VALUE
          • Cookie的名称和值
        • expires=DATE
          • Cookie的有效期
        • path=PATH
          • 将服务器上的文件目录作为Cookie的适用对象
        • domain=域名
          • 作为Cookie适用对象的域名
        • Secure
          • 仅在HTTPS安全连接时才会发送Cookie
        • HttpOnly
          • 使Cookie不能被JavaScript脚本访问
            • 防止XSS跨站脚本攻击
    • Cookie(请求首部字段)
      *
  • 其他首部字段
    • X-Frame-Options
      • 防止点击劫持攻击
    • X-XSS-Protection
      • 防止XSS跨站攻击
    • DNT
    • P3P

HTTPS

HTTP缺点

  • HTTP的防篡改措施
    • SHA-1
    • MD5
  • 明文传输
  • 无法验证通信方身份
    • 接收大量无意义的请求,导致DoS攻击(拒绝服务攻击)
  • 无法验证报文的完整性
    • 报文可能被修改,导致中间人攻击(MITM)

HTTP+SSL

  • 加密
    • 对称密钥加密(共享密钥加密)
      • 解密与加密使用同一密钥,所以密钥会发送给解密之人
    • 公开密钥加密
      • 一对非对称密钥
        • 私有密钥
          • 解密方使用该密钥解密
        • 公开密钥
          • 加密方使用该密钥进行加密
    • 总结:公开密钥加密解决了共享密钥在传输时被窃取的危险
    • HTTPS的混合加密
      • 在交换密钥环节使用公开密钥加密,建立通信后,使用共享密钥加密
  • 认证
    • 查找证书
    • 公钥证书(数字证书)
      • 解决公钥在传输过程中可能被替换的问题

确认用户访问身份的认证

HTTP的认证方式

  • BASIC认证
    • 发送请求后收到 状态码401,然后客户端将账户密码用 : 连接,再base64加密后传输给服务器
  • DIGEST认证(摘要认证)
    • 可防止窃听,但不防止用户伪装
    • 质询/响应的方式
  • SSL客户端认证
    • 客户端证书认证
    • 双因素认证
      • 客户端认证
      • 表单认证
  • FormBase认证(基于表单认证)
    • Cookie管理Session(会话)
    • 存在XSS攻击

基于 HTTP的其他协议

HTTP缺点:SNS(社交网络服务)需要实时更新网页内容,导致频繁的从客户端到服务端访问,若没有内容更新,则会浪费资源

解决方法

  • Ajax(异步JavaScript与XML技术)
    • 核心:API : XMLHttpRequest
    • 通过调用JavaScript脚本与服务器建立通信,从web页面发起请求,更新局部内容
    • 缺点:产生大量请求
  • Comet
    • 延迟应答
      • 接到请求后先将挂起,待服务端有内容更新时,再返回响应
    • 缺点:为了维持连接 ,会消耗较多资源
  • SPDY
    • 以会话层的形式加入
    • 功能
      • 多路复用流
      • 赋予请求优先级
      • 压缩HTTP首部
      • 推送功能
      • 服务器提示功能
  • WebSocket

构建web内容的技术

HTML

CSS

JavaScript

  • 动态HTML

DOM

  • 用来操作HTML和XML的API

web应用

  • 内容
    • 静态内容
    • 动态内容
      • 由程序创建
  • CGI(通用网关接口)
    • 将请求转给CGI程序处理的一种机制
    • CGI程序
      • PHP
      • Ruby
      • Perl
  • Servlet
    • 运行的环境:Web容器或Servlet容器
    • 优点:运行在与web服务器相同的进程中,受到的负载小,而CGI每次接受请求都要启动,访问量大时,会导致服务器负载过大

数据发布的格式及语言

  • XML(可拓展标记语言)
    • 使数据容易读取
  • 发布更新信息的RSS/Atom
  • JSON

web的攻击技术

攻击类别

  • 被动攻击(设计陷阱使用户触发,执行攻击代码)
    • XSS
    • HTTP首部注入攻击
    • 会话固定攻击
    • 跨站点请求伪造(CSRF)
  • 主动攻击(直接访问web应用,传入攻击代码)
    • SQL注入
      • 非法查看或篡改数据
      • 规避认证
      • 执行相关程序
    • OS命令注入
      • 原理:通过web应用调用shell执行非法的操作系统命令

因输出值转义不完全导致的漏洞

  • XSS
    • 原理:通过web网站的注册用户的浏览器内运行非法HTML标签或JavaScript
    • 危害
      • 利用脚本窃取用户Cookie
      • 显示伪造的文章/图片
      • 利用虚假输入表单骗取用户信息
  • HTTP首部注入攻击
    • 原理:在响应首部字段内插入换行,添加任意响应首部或主体
    • 注意:%0D%0A 代表HTTP报文中的换行符
    • 危害
      • 设置任何Cookie信息
      • 重定向至任何URL
      • 显示任意的主体(HTTP响应截断攻击)
    • HTTP响应截断攻击
      • 注:%0D%0A%0D%0A 两个连续的换行实现HTTP首部与主体分隔所需的空行
      • 利用插入字符串%0D%0A%0D%0A 可实现伪造主体
      • 危害
        • 用户浏览器显示伪造的web页面
  • 邮件首部注入攻击
    • 利用web应用中的邮件发送功能
    • 向邮件首部To或Subject内添加任意非法内容
  • 目录遍历攻击
    • 子主题 1
  • 远程文件包含漏洞
    • PHP的include 和 require ,5.2.0版本以后默认无效
    • 原理:部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,当脚本读取后,就可运行任意脚本

因设计缺陷导致的漏洞

  • 强制浏览
    • 推测文件名及目录
    • 浏览由软件自动生成的备份文件
    • 浏览经认证才可显示的文件
  • 不正确的错误消息处理
    • 根据错误提示信息,得到其他信息
  • 开放重定向
    • URL跳转

因会话管理疏忽导致的漏洞

  • 会话劫持
    • 获取用户会话ID
    • 获取途径
      • 推测会话ID
      • 窃听或XSS攻击盗取
      • 会话固定攻击强行获取
  • 会话固定攻击
    • 强制用户使用攻击者指定的会话ID
    • Session Adoption
      • PHP或ASP.NET能够接受处理未知会话ID的功能
  • 跨站点请求伪造(CSRF)
    • 强制对已完成认证的用户进行非预期的信息更新

其他

  • 缓存污染
  • 密码破解
    • 通过网络的密码试错
      • 穷举法
      • 字典攻击
    • 对已加密的密码破解
      • 穷举/字典
      • 彩虹表
      • 拿到密钥
      • 加密算法的漏洞
  • 点击劫持
    • 利用透明的按钮或链接,覆盖在web页面上吗,做成陷阱
  • DoS攻击
    • 同时发送大量请求,使服务器停止服务

XMind: ZEN - Trial Version

标签:web,HTTP,请求,首部,报文,服务器,图解
来源: https://www.cnblogs.com/hacker-snail/p/13837416.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有