图解http阅读笔记(9~11章)

185 阅读10分钟

第9章——基于 HTTP 的功能追加协议

9.1 基于 HTTP 的协议

在建立 HTTP 标准规范时,制订者主要想把 HTTP 当作传输 HTML 文档的协议。但是后来Web的途径开始多种多样,有些功能可能局限于HTTP协议上的一些限制无法到达最优的性能,而重新创建一套适合的协议又不现实,所以有了一些在HTTP协议基础上添加某些功能的新协议。

9.2 消除 HTTP 瓶颈的 SPDY

Google 在 2010 年发布了 SPDY(取自 SPeeDY,发音同 speedy),其开发目标旨在解决 HTTP 的性能瓶颈,缩短 Web 页面的加载时间(50%)。

  1. HTTP 的瓶颈

    在一些社交娱乐网站上每时每刻都会有许多用户更新网站内容,为了尽可能实时显示更新内容需要服务器一有内容更新就直接把内容反馈到客户端界面上,但是如果使用HTTP协议探知服务器是否更新就会频繁发送请求,其中会包括很多无效通信,同时也存在如下瓶颈限制:

    • 一条连接上只可发送一个请求
    • 请求只能从客户端开始。客户端不可以接收除响应以外的指令
    • 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大
    • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多
    • 可任意选择数据压缩格式。非强制压缩发送

    Ajax 的解决方法:

    Ajax(Asynchronous JavaScript and XML, 异 步 JavaScript 与 XML 技术)是一种有效利用 JavaScript 和 DOM(Document Object Model,文档对象模型)的操作,以达到局部 Web 页面替换加载的异步通信手段。

    Ajax 的核心技术是名为 XMLHttpRequest 的 API,通过 JavaScript 脚本语言的调用就能和服务器进行 HTTP 通信。借由这种手段,就能从已加载完毕的 Web 页面上发起请求,只更新局部页面。不过这可能导致大量请求产生,另外Ajax 仍未解决 HTTP 协议本身存在的问题。

    Comet 的解决方法:

    通常,服务器端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能,Comet 会先将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。因此,服务器端一旦有更新,就可以立即反馈给客户端。虽然这样做到了实时更新,但是维持长时间的连接消耗了更多资源,同事也仍未解决 HTTP 协议本身存在的问题。

    SPDY 的目标:

    陆续出现的 Ajax 和 Comet 等提高易用性的技术,一定程度上使 HTTP得到了改善,但 HTTP 协议本身的限制也令人有些束手无策。为了进行根本性的改善,需要有一些协议层面上的改动。

  2. SPDY 的设计与功能

    SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规定通信中使用 SSL。SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP建立通信连接。

    image-20220524114535984

    使用 SPDY 后,HTTP 协议额外获得以下功能:

    • 多路复用流:可以通过单一TCP连接无限制处理多个HTTP请求
    • 赋予请求优先级:给请求分配优先级顺序,解决在发送多个请求时因带宽低而导致响应变慢的问题。
    • 压缩 HTTP 首部:使得通信产生的数据包量和发送的字节数变少,提高传输速度。
    • 推送功能:支持服务器主动向客户端推送数据,无需等待客户端发送请求。
    • 服务器提示功能:服务器可以主动提示客户端请求所需的资源。
  3. SPDY 消除 Web 瓶颈了吗

    在HTTP2未推出之前,spdy在业界内已经有一定的市场占用量,并且它的成绩也是不容忽视的,因此在很长一段时间,市场上可能会见到spdy和h2同时使用的场景。

    限制:因为 SPDY 基本上只是将单个域名( IP 地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限制。

9.3 使用浏览器进行全双工通信的 WebSocket

利用 Ajax 和 Comet 技术进行通信可以提升 Web 的浏览速度。但问题在于通信若使用 HTTP 协议,就无法彻底解决瓶颈问题。WebSocket网络技术正是为解决这些问题而实现的一套新协议及 API(可通过js调用)。

  1. WebSocket 的设计与功能

    Web 浏览器与 Web 服务器之间全双工通信标准,WebSocket 协议由 IETF 定为标准,WebSocket API 由 W3C 定为标准。WebSocket 技术主要是为了解决 Ajax 和 Comet里 XMLHttpRequest 附带的缺陷所引起的问题。

  2. WebSocket 协议

    由客户端发起连接,一旦建立连接,无论是服务器还是客户端都可直接向对方发送报文。协议的主要特点如下:

    • 推送功能:支持由服务器向客户端推送数据的推送功能。
    • 减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态。相比HTTP减少了每次连接的开销,而且WebSocket 的首部信息很小,通信量也相应减少了

9.4 期盼已久的 HTTP/2.0

​ ---->HTTP 2.0 协议详解

9.5 Web 服务器管理文件的 WebDAV

WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。

第10章——构建 Web 内容的技术

10.1 HTML

Web 页面几乎全由 HTML 构建,由 HTML 构成的文档经过浏览器的解析、渲染后,呈现出来的结果就是 Web 页面。

10.2 动态 HTML

动态 HTML 技术是通过调用客户端脚本语言 JavaScript,实现对HTML 的 Web 页面的动态改造。利用 DOM(Document Object Model,文档对象模型)可指定欲发生动态变化的 HTML 元素。

10.3 Web 应用

Web 应用是指通过 Web 功能提供的应用程序。原本应用 HTTP 协议的 Web 的机制就是对客户端发来的请求,返回事前准备好的内容。可随着 Web 越来越普及,仅靠这样的做法已不足以应对所有的需求,更需要引入由程序创建 HTML 内容的做法。

  1. 与 Web 服务器及程序协作的 CGI

    CGI(Common Gateway Interface,通用网关接口)是指 Web 服务器在接收到客户端发送过来的请求后转发给程序的一组机制。在 CGI 的作用下,程序会对请求内容做出相应的动作,比如创建 HTML 等动态内容。

  2. 因 Java 而普及的 Servlet

    Servlet 是一种能在服务器上创建动态内容的程序,之前提及的 CGI,由于每次接到请求,程序都要跟着启动一次。因此一旦访问量过大,Web 服务器要承担相当大的负载。而 Servlet 运行在与 Web 服务器相同的进程中,因此受到的负载较小 。Servlet 的运行环境叫做 Web 容器或 Servlet 容器。

image-20220524135628314

第 11——章 Web 的攻击技术

11.1 针对 Web 的攻击技术

  1. HTTP 不具备必要的安全功能

    从整体上看,HTTP 就是一个通用的单纯协议机制。因此它具备较多优势,但是在安全性方面则呈劣势。所以需要开发者在开发过程中自行设计认证等安全设置,但是自行设计也就意味着会有各种潜在问题容易被攻击者利用。

  2. 在客户端即可篡改请求

    在 HTTP 请求报文内加载攻击代码,就能发起对 Web 应用的攻击。通过 URL 查询字段或表单、HTTP 首部、Cookie 等途径把攻击代码传入,若这时 Web 应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到管理权限。

  3. 针对 Web 应用的攻击模式

    主要分为主动攻击和被动攻击:

    • 以服务器为目标的主动攻击

      主动攻击(active attack)是指攻击者通过直接访问 Web 应用,把攻击代码传入的攻击模式。具有代表性的攻击是 SQL 注入攻击和 OS 命令注入攻击。

    • 以服务器为目标的被动攻击

      指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访问发起攻击。具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。

      image-20220524143542609

11.2 因输出值转义不完全引发的安全漏洞

  1. 跨站脚本攻击
  2. SQL 注入攻击
  3. OS 命令注入攻击
  4. HTTP 首部注入攻击

11.3 因设置或设计上的缺陷引发的安全漏洞

  1. 强制浏览

    强制浏览(Forced Browsing)安全漏洞是指,从安置在 Web 服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。例如对于一些非公开的资源,他们的URI可能会通过一些其他的类似的URI被推测出来导致泄露。强制浏览有可能会造成以下一些影响。

    • 泄露顾客的个人信息等重要情报
    • 泄露原本需要具有访问权限的用户才可查阅的信息内容
    • 泄露未外连到外界的文件
  2. 不正确的错误消息处理

    指Web 应用的错误信息内包含对攻击者有用的信息。

  3. 开放重定向

    指假如指定的重定向 URL到某个具有恶意的 Web 网站,那么用户就会被诱导至那个 Web 网站

11.4 因会话管理疏忽引发的安全漏洞

  1. 会话劫持

    指攻击者通过某种手段拿到了用户的会话 ID,并非法使用此会话 ID 伪装成用户,达到攻击的目的

    image-20220524163333146

  2. 会话固定攻击

    对以窃取目标会话 ID 为主动攻击手段的会话劫持而言,会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话 ID,属于被动攻击。

    image-20220524163536811

  3. 跨站点请求伪造

    指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。跨站点请求伪造有可能会造成以下等影响。

    • 利用已通过认证的用户权限更新设定信息等
    • 利用已通过认证的用户权限购买商品
    • 利用已通过认证的用户权限在留言板上发表言论

    image-20220524163857654

11.5 其他安全漏洞

密码破解,点击劫持,DoS攻击,后门程序等。。。