Skip to content

Latest commit

 

History

History
182 lines (159 loc) · 7.31 KB

2019-11-11_图解HTTP.md

File metadata and controls

182 lines (159 loc) · 7.31 KB

图解 HTTP

1. 了解 Web 以及网络基础

  • 分层:
    • 应用层
      • HTTP
      • DNS(Domain Name Service),将域名与 IP 关联
    • 传输层
      • TCP
    • 网络层
      • IP
      • ARP(Address Resolution Protocol),将 IP 地址解析成 MAC
    • 链路层

2. 简单的 HTTP 协议

  • HTTP 是不保存状态的协议
  • 持久连接节约通信量
    • HTTP 1.1 默认是持久连接
    • 管线化技术(pipeling)
  • 使用 Cookie 作为状态管理
    • 服务端使用 Session 的概念

3. HTTP 报文内的 HTTP 信息

  • 空行(CR+LF)作为首部和主体的分隔
  • 压缩传输

4. 返回结果的 HTTP 状态码

  • 状态码

    类别 原因短语
    1XX Informational (信息状态码) 接受的请求正在处理
    2XX Success(成功状态码) 请求正常处理完毕
    3XX Redirection (重定向状态码) 需要进行附加操作以完成请求
    4XX Client Error(客户端错误状态码) 服务器无法处理请求
    5XX Server Error(服务器错误状态码) 服务器处理请提取错误
  • 4XX

    • 400 bad request
    • 401 unauthorized
    • 403 forbidden
    • 404 not found

5. 与 HTTP 协作的 Web 服务器

  • 单台虚拟主机实现的多域名
  • 通信数据转发程序
    • 代理(正向代理):转发功能
      • 与服务器端代理(反向代理)相对
    • 网关
      • 利用网关层,可将 HTTP 转成非 HTTP
      • 提高了安全的可靠性
    • 隧道
      • 目的是保证客户端和服务端进行安全的通信,如 SSL
  • 缓存服务器

6. HTTP 首部

  • 通用字段首部(General Header Fields)
    • cache control
      • no-store:不进行缓存
      • no-cache:不缓存过期资源
        • do-not-serve-from-cache-without-revalidation
  • 请求字段首部(Request Header Fields)
    • Accept-Charset
    • Accept-Encoding
    • Accept-Language
    • Authorization
      • 401 Unauthorized
  • 响应字段首部(Response Header Fields)
    • X-XSS-Protection
      • 1:将 XSS 过滤设置成有效状态
      • 0:将 XSS 过滤设置成无效状态
  • 实体请求字段首部(Entity Header Fields)

7. 确保 Web 安全的 HTTPS

  • HTTP 的主要缺点
    • 通信使用明文,内容可能会被看到
    • 不验证通信放的身份,因此有可能遭遇伪装
    • 无法证明明文的完整性,所以有可能已经篡改
  • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
    • SSL 层:在 HTTP 和 TCP 之间
    • HTTPS 采用混合加密机制
      • 使用公开密钥加密方式安全地交换在稍后共享密钥加密中使用的密钥
      • 确保交换的米越好是安全的前提下,使用共享密钥加密方式进行通信
    • CA(Certificate Authority) 证书
      • 服务器运营人员向数字证书机构提出公开密钥的申请
      • 数字证书机构判明申请者身份之后,会对已经申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将公开密钥放入公钥证书后绑定在一起。
      • 服务器将 CA 颁发的公钥证书送给客户端,以进行公开密钥加密方式通信。
      • 客户端使用数字证书机构的公开密钥,对证书上的数字签名进行验证,验证通过之后,客户端可以确认:
          1. 认证服务器的公开密钥的是真是有效的数字证书认证机构
          1. 服务器的公开密钥是值得信赖的。
      • 客户端使用服务器的公开密钥对报文进行加密
    • HTTPS 的安全通信机制
        1. 客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包含客户端支持的 SSL 的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法以及密钥长度等)。
        1. 服务器可进行 SSL 通信时,会以 Server Hello 作为应答。和客户端一样,在报文中包含 SSL 版本以及加密组件。服务器的加密组件内容是从接受到的客户端的加密组件内筛选出来的。
        1. 之后服务器发送 Certificate 报文。报文中包含公开密钥证书。
        1. 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的 SSL 握手协商部分结束。
        1. SSL 第一次握手结束之后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中所使用的的一种被称为 Pre-Master secret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。
        1. 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret 密钥进行加密。
        1. 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否成功,要以服务器能否正确解密该报文作为判定标准。
        1. 服务器同样发送 Change Cipher Spec 报文。
        1. 服务器同样发送 Finished 报文。
        1. 服务器和客户端的 Finished 报文交换完毕之后,SSL 连接就算建立完成。当然,通信会受到 SSL 的保护。从此处开始进行应用层协议的通信,即发送 HTTP 请求。
        1. 应用层协议通信,即发送 HTTP 响应。
        1. 最后由客户端断开连接。断开连接时,发送 close_notify 报文。
    • SSL 慢
      • 通信慢
      • 消耗大量 CPU

8. 确认访问用户身份

  • 认证
    • 密码
    • 动态令牌
    • 数字证书
    • 生物认证
    • IC 卡
  • HTPP 使用的认证
    • BASIC 认证
    • DIGEST 认证
    • SSL 客户端认证
    • FormBase 认证

9. 基于 HTTP 的功能追加协议

  • 消除 HTTP 瓶颈的 SPDY
  • 使用浏览器进行全双工的 WebSocket
  • HTPP 2.0
    • SPDY
    • HTTP Speed + Mobility
    • Network-Friendly HTTP Upgrade

10. 构建 Web 内容的技术

  • HTML
  • DHTML
  • CGI(Common Gateway Interface)

11. Web 的攻击技术

  • 针对 Web 的攻击技术

    • HTPP 不具备必要的安全性。
    • 在客户端即可篡改请求
    • 针对 Web 应用的攻击模式
      • 主动攻击
        • SQL 注入攻击
        • OS 命令攻击
      • 被动攻击
  • 因输出值专一不完全引发的安全漏洞

    • 跨站脚本攻击(Cross-Site Scripting, XSS)攻击: 通过存在安全漏洞的 Web 网站注册用户的浏览器内运行非法的 HTML 标签或者 JavaScript 进行的一种攻击。
    • SQL 注入攻击(SQL Injection)
    • OS 命令注入攻击(OS Command Injection)
    • HTTP 首部注入攻击
    • 邮件首部注入攻击
    • 目录遍历攻击
    • 远程文件包含漏洞
  • 因设置或设计上的缺陷引发的安全漏洞

    • 强制浏览
    • 不正确的错误消息处理
    • 开放重定向
  • 因会话管理疏忽引发的安全漏洞

    • 会话劫持
    • 会话固定攻击
    • 跨站点请求攻击(CSRF, Cross-Site Reqeust Forgeries)
  • 其他安全漏洞

    • 密码破解
      • 通过网络的密码试错
        • 穷举、字典
      • 对已加密密码的破解(值攻击者入侵系统,已获得加密火舌三列处理的密码数据的情况)
        • 穷举
        • 彩虹表
        • 拿到密钥
        • 加密算法的漏洞
    • 点击劫持(Clickjacking)
    • DoS 攻击(Denial of Service attack)
      • DDoS
    • 后门程序(Backdoor)