《图解HTTP》总结

了解HTTP

看完《图解HTTP》进行简单总结。

了解 Web 及网络基础

  1. 使用HTTP协议访问web
    在这里插入图片描述
    web使用HTTP(http是超文本传输协议)的协议作为规范,完成从客户端到服务端等一系列运作流程。

  2. 网络基础TCP/IP
    TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层。

TCP/IP协议族各层的作用如下:
应用层:决定了向用户提供应用服务时通信的活动.。
HTTP处于应用层.TCP/IP预存各类通用的应用服务,如:FTP(文件传输协 议),DNS(域名系统)。

传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据 传输。

网络层(又名网络互连层):网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数 据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计 算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所 起的作用就是在众多的选项内选择一条传输路线。

链路层(又名数据链路层,网络接口层):用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱 动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等 物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在 链路层的作用范围之内。

TCP/IP通信传输流
利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通 信。发送端从应用层往下走,接收端则往应用层往上走。
在这里插入图片描述

  1. 与 HTTP 关系密切的协议 : IP、TCP 和 DNS
    (1)负责传输的IP协议:
    IP网际协议位于网络层,IP是一种协议的名称,作用是把各种数据包传送给对方.
    使用IP地址和MAC地址能够保证传送到对方,IP地址指明节点被分配到的地址,MAC地址是网卡所属的固定位置.使用ARP协议凭借MAC地址进行通信,ARP 是一种用以解析地址的协议,根据通信方 的 IP 地址就可以反查出对应的 MAC 地址。
    在这里插入图片描述
    (2)确保可靠性的TCP协议
    TCP 位于传输层,提供可靠的字节流服务(为了方便传输,将大 块数据分割成以报文段为单位的数据包进行管理),确保数据能到达目标(采用三次握手)
    在这里插入图片描述

  2. 负责域名解析的 DNS 服务
    DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的 协议。它提供域名到 IP 地址之间的解析服务。
    在这里插入图片描述

  3. 各种协议与 HTTP 协议的关系式
    在这里插入图片描述

6.URL和URI
URL正是使用 Web 浏览器等 访问 Web 页面时需要输入的网页地址。
URI 用字符串标识某一互联网资源,而 URL表示资源的地点(互联 网上所处的位置)。可见 URL是 URI 的子集。
表示指定的 URI,要使用涵盖全部必要信息的绝对 URI、绝对 URL以 及相对 URL。相对 URL,是指从浏览器中基本 URI 处指定的 URL, 形如 /image/logo.gif。

简单的HTTP协议

1.HTTP 协议用于客户端和服务器端之间 的通信
在这里插入图片描述

2.通过请求和响应的交换达成通信
请求必定由客户端发出,而服务器端回复响应

3.HTTP 是不保存状态的协议
HTTP 协议自身不具备保存之前发送过的请求或响应的功能

4.请求 URI 定位资源
HTTP 协议使用 URI 定位互联网上的资源。正是因为 URI 的特定功 能,在互联网上任意位置的资源都能访问到。

5.告知服务器意图的 HTTP 方法
GET :获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文首部
DELETE:删除文件
OPTIONS:询问支持的方法
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理

6.持久连接节省通信量
每次的请求都会造成无谓的 TCP 连接建立和断 开,增加通信量的开销。
为解决TCP连接问题,后续版本增加持续连接,管线化(管线化技术 出现后,不用等待响应亦可直接发送下一个请求)

7.使用Cookie的状态管理
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的 首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器 发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。

HTTP 报文内的 HTTP 信息

1.HTTP报文
请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。
在这里插入图片描述

2.请求报文及响应报文的结构
在这里插入图片描述

3.编码提升传输速率
HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过 程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量 的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多 的 CPU 等资源。

(1)压缩传输的内容编码
常用的内容编码有以下几种:gzip(GNU zip) compress(UNIX 系统的标准压缩) deflate(zlib) identity(不进行编码)

(2)分割发送的分块传输编码

4.发送多种数据的多部分对象集合
采用了 MIME(Multipurpose Internet Mail Extensions,多用途因特网邮 件扩展)机制,它允许邮件处理文本、图片、视频等多个不同类型的 53
数据。

5.获取部分内容的范围请求
需要一种可恢 复的机制。所谓恢复是指能从之前下载中断处恢复下载。
执行范围请求时,会用到首部字段 Range 来指定资源的 byte 范围。

6.内容协商返回最合适的内容
当浏览器的默认语言为英语或中文,访问相同 URI 的 Web 页面时, 则会显示对应的英语版或中文版的 Web 页面。这样的机制称为内容 协商(Content Negotiation)。

返回结果的 HTTP状态码

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结 果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出 现了错误。
1.2XX:响应结果表明请求被正常处理
200 OK
204 No Conten
206 Partial Content

2.3XX 重定向:3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved Permanently 该状态码表示请求的资源已被分配了新的 URI,以后 应使用资源现在所指的 URI。

302 Found 该状态码表示请求的资源已被分配了新的 URI,希望 用户(本次)能使用新的 URI 访问。

303 See Other 该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。

304 Not Modified

307 Temporary Redirect 该状态码与 302 Found 有着相同的含义

3.4XX 客户端错误:4XX 的响应结果表明客户端是发生错误的原因所在。
400 Bad Request
401 Unauthorized 该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、 DIGEST 认证)的认证信息。
403 Forbidden
404 Not Found

4.5XX 服务器错误:5XX 的响应结果表明服务器本身发生错误。
500 Internal Server Error
503 Service Unavailable

与 HTTP 协作的 Web 服 务器

1.用单台虚拟主机实现多个域名
物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以 假想已具有多台服务器。

2.通信数据转发程序 :代理、网关、隧 道
代理是一种有转发功能的应用程序,它扮演了位于服务器和客户 端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时 也接收服务器返回的响应并转发给客户端。

网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客 户端可能都不会察觉,自己的通信目标是一个网关。
利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。

隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。隧道的目的是确保客户端能与服务器进行安全的通信。

3.保存资源的缓存
缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存 可减少对源服务器的访问,因此也就节省了通信流量和通信时间。

(1)缓存,也会因为客户端的要求、缓存的有效期等因素,向源 服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从 源服务器上获取“新”资源。

(2)缓存不仅可以存在于缓存服务器内,还可以存在客户端浏览器中。缓存服务器相同的一点是,当判定缓存过期后,会向源服务 器确认资源的有效性。若判断浏览器缓存失效,浏览器会再次请求新 资源。

HTTP 首部

1.HTTP 报文首部
首部字段是为了给浏览器和服务器提供报文主体大小、所使用的 语言、认证信息等内容。

2.HTTP首部字段
HTTP 首部字段根据实际用途被分为以下 4 种类型。
通用首部字段(General Header Fields)
请求首部字段(Request Header Fields)
响应首部字段(Response Header Fields)
实体首部字段(Entity Header Fields)

3.HTTP/1.1 通用首部字段
Cache-Control 的指令,就能操作缓存的工作机 制。

Connection 首部字段具备如下两个作用。 控制不再转发给代理的首部字段 管理持久连接 .

Date 表明创建 HTTP 报文的日期和时间。

Pragma 是 HTTP/1.1 之前版本的历史遗留字段,仅作为与 HTTP/1.0 的向后兼容而定义。

Trailer 会事先说明在报文主体后记录了哪些首部字段。该 首部字段可应用在 HTTP/1.1 版本分块传输编码时。

Transfer-Encoding 规定了传输报文主体时采用的编码方式。

Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的 版本进行通信,其参数值可以用来指定一个完全不同的通信协议。

Via 是为了追踪客户端与服务器之间的请求和响应报文 的传输路径。

Warning 首部是从 HTTP/1.0 的响应首部(Retry-After)演 变过来的。该首部通常会告知用户一些与缓存相关的问题的警告。

4.请求首部字段
请求首部字段是从客户端往服务器端发送请求报文中所使用的字段, 用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等 内容。

Accept 首部字段可通知服务器,用户代理能够处理的媒体类型及媒体 类型的相对优先级。

Accept-Charset 首部字段可用来通知服务器用户代理支持的字符集及 字符集的相对优先顺序。

Accept-Encoding 首部字段用来告知服务器用户代理支持的内容编码及 内容编码的优先级顺序。

Accept-Language 用来告知服务器用户代理能够处理的自然 语言集(指中文或英文等),以及自然语言集的相对优先级。
Authorization 是用来告知服务器,用户代理的认证信息(证 书值)。

Expect 来告知服务器,期望出现的某种特定行 为。

From 用来告知服务器使用用户代理的用户的电子邮件地 址。

Host 会告知服务器,请求的资源所处的互联网主机名和端 口号。

If-xxx 这种样式的请求首部字段,都可称为条件请求。

5.响应首部字段
响应首部字段是由服务器端向客户端返回响应报文中所使用的字段, 用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等 信息。

Accept-Ranges 是用来告知客户端服务器是否能处理范围请 求,以指定获取服务器端某个部分的资源。

Age 能告知客户端,源服务器在多久前创建了响应。
ETag 能告知客户端实体标识。

Proxy-Authenticate 会把由代理服务器所要求的认证信息发送 给客户端。

Retry-After 告知客户端应该在多久之后再次发送请求。

Server 告知客户端当前服务器上安装的 HTTP 服务器应用程 序的信息。

WWW-Authenticate 用于 HTTP 访问认证。它会告知客户端 适用于访问请求 URI 所指定资源的认证方案(Basic 或是 Digest)和 带参数提示的质询(challenge)。

Vary 可对缓存进行控制。源服务器会向代理服务器传达关 于本地缓存使用方法的命令。

6.实体首部字段
实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首 部,用于补充内容的更新时间等与实体相关的信息。

7.为 Cookie 服务的首部字段
Cookie 的工作机制是用户识别及状态管理。Web 网站为了管理用户的 状态会通过 Web 浏览器,把一些数据临时写入用户的计算机内。接 着当用户访问该Web网站时,可通过通信方式取回之前发放的 Cookie。
首部字段 Cookie 会告知服务器,当客户端想获得 HTTP 状态管理支 持时,就会在请求中包含从服务器接收到的 Cookie。

确保 Web 安全的 HTTPS

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。
HTTP主要有这些不足:
通信使用明文(不加密),内容可能会被窃听
不验证通信方的身份,因此有可能遭遇伪装
无法证明报文的完整性,所以有可能已遭篡改

HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代 替而已。
在这里插入图片描述
SSL 速度慢
SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗 CPU 及内存等资源,导致处理速度变慢。
在这里插入图片描述
因此,如果是非敏感信息则使用 HTTP 通信,只有在包含个人信息 等敏感数据时,才利用 HTTPS 加密通信。

确认访问用户身份的认 证

HTTP 使用的认证方式 HTTP/1.1 使用的认证方式如下所示。
BASIC 认证(基本认证)
DIGEST 认证(摘要认证)
SSL 客户端认证
FormBase 认证(基于表单认证)

BASIC 认证

BASIC 认证使用上不够便捷灵活,且达不到多数 Web 网站期望的安 全性等级,因此它并不常用。BASIC 认证使用上不够便捷灵活,且达不到多数 Web 网站期望的安 全性等级,因此它并不常用。在这里插入图片描述
由于明文解码后就是用户 ID 和密码,在 HTTP 等非加密通信的线路上进行 BASIC 认证的过程 中,如果被人窃听,被盗的可能性极高。BASIC 认证使用上不够便捷灵活,且达不到多数 Web 网站期望的安 全性等级,因此它并不常用。

DIGEST 认证
在这里插入图片描述
DIGEST 认证提供防止密码被窃听的保护 机制,但并不存在防止用户伪装的保护机制。DIGEST 认证和 BASIC 认证一样,使用上不那么便捷灵活,且仍达不 到多数 Web 网站对高度安全等级的追求标准。因此它的适用范围也 有所受限。

SSL 客户端认证
为达到 SSL客户端认证的目的,需要事先将客户端证书分发给客户 端,且客户端必须安装此证书。
在多数情况下,SSL客户端认证不会仅依靠证书完成认证,一般会和 基于表单认证(稍后讲解)组合形成一种双因素认证(Two-factor authentication)来使用。
每个认证机构颁发客户端证书的费用不尽相同,平摊到一张证书上, 一年费用约几万至十几万日元。

基于表单认证
基于表单的认证方法并不是在 HTTP 协议中定义的。客户端会向服务 器上的 Web 应用程序发送登录信息(Credential),按登录信息的验 证结果认证。

(1)认证多半为基于表单认证:不具备共同标准规范的表单认证,在每个 Web 网站上都会有各不相 同的实现方式。

(2)Session 管理及 Cookie 应用
基于表单认证的标准规范尚未有定论,一般会使用 Cookie 来管Session(会话)。

基于 HTTP 的功能追加 协议

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

SPDY的设计与功能
SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之 间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规 定通信中使用 SSL.
在这里插入图片描述
使用 SPDY 后,HTTP 协议额外获得以下功能:
多路复用流
赋予请求优先级
压缩 HTTP 首部
推送功能(支持服务器主动向客户端推送数据的功能)
服务器提示功能(提示客户端请求所需的资源)

2.使用浏览器进行全双工通信的 WebSocket
WebSocket 协议的主要特点:
推送功能:支持由服务器向客户端推送数据的推送功能
减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态。

3.HTTP/2.0
HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验.

4.Web 服务器管理文件的 WebDAV
WebDAV(Web-based Distributed Authoring and Versioning,基于万维网 的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进 行文件复制、编辑等操作的分布式文件系统。
除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编 辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的 版本控制功能。

构建 Web 内容的技术

1.HTML

2.动态 HTML
动态 HTML技术是通过调用客户端脚本语言 JavaScript,实现对 HTML的 Web 页面的动态改造。
DOM 是用以操作 HTML文档和 XML文档的 API(Application Programming Interface,应用编程接口)。使用 DOM 可以将 HTML内 的元素当作对象操作,如取出元素内的字符串、改变那个 CSS 的属 性等,使页面的设计发生改变。

3.Web 应用
Web 应用是指通过 Web 功能提供的应用程序
CGI(Common Gateway Interface,通用网关接口)是指 Web 服务器在 接收到客户端发送过来的请求后转发给程序的一组机制。
Servlet1 是一种能在服务器上创建动态内容的程序。Servlet 是用 Java 语言实现的一个接口,属于面向企业级 Java(JavaEE,Java Enterprise Edition)的一部分。

4.数据发布的格式及语言
XML(eXtensible Markup Language,可扩展标记语言)是一种可按应 用目标进行扩展的通用标记语言。旨在通过使用 XML,使互联网数 据共享变得更容易。
RSS(简易信息聚合,也叫聚合内容)和 Atom 都是发布新闻或博客 日志等更新信息文档的格式的总称。两者都用到了 XML.
JSON(JavaScript Object Notation)是一种以 JavaScript(ECMAScript)的对象表示法为基础的轻量级数据标记语 言。能够处理的数据类型有 false/null/true/ 对象 / 数组 / 数字 / 字符 串,这 7 种类型。

Web 的攻击技术

针对Web的攻击技术

1.HTTP 不具备必要的安全功能
开发者需要自行设计并开发认证及会话管理功能来满足 Web 应用的安全。而自行设计就意味着会出现各种形形色色的实现。结 果,安全等级并不完备,可仍在运作的 Web 应用背后却隐藏着各种 容易被攻击者滥用的安全漏洞的 Bug。

2. 在客户端即可篡改请求
在这里插入图片描述

3.针对 Web 应用的攻击模式
对 Web 应用的攻击模式有两种,主动攻击被动攻击.
主动攻击:
在这里插入图片描述
被动攻击:
在这里插入图片描述
因输出值转义不完全引发的安全漏洞
实施 Web 应用的安全对策可大致分为 客户端的验证和 Web 应用端(服务器端)的验证(包含输入值验证 ,输出值转义).
1.跨站脚本攻击
跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞的 Web 网站注册用户的浏览器内运行非法的 HTML标签或 JavaScript 进 行的一种攻击。

2.SQL 注入攻击
SQL注入(SQLInjection)是指针对 Web 应用使用的数据库,通 过运行非法的 SQL而产生的攻击。

3.OS 命令注入攻击
OS 命令注入攻击(OS Command Injection)是指通过 Web 应用,执行 非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的地 方就有存在被攻击的风险。

4.HTTP 首部注入攻击
HTTP 首部注入攻击(HTTP Header Injection)是指攻击者通过在响应 首部字段内插入换行,添加任意响应首部或主体的一种攻击。属于被动攻击模式。

5.邮件首部注入攻击
邮件首部注入(Mail Header Injection)是指 Web 应用中的邮件发送功 能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的 攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告 邮件或病毒邮件。

6.目录遍历攻击
目录遍历(Directory Traversal)攻击是指对本无意公开的文件目录, 通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击有 时也称为路径遍历(Path Traversal)攻击。

7.远程文件包含漏洞
远程文件包含漏洞(Remote File Inclusion)是指当部分脚本内容需要 从其他文件读入时,攻击者利用指定外部服务器的 URL充当依赖文 件,让脚本读取之后,就可运行任意脚本的一种攻击。

因设置或设计上的缺陷引发的安全漏洞
因设置或设计上的缺陷引发的安全漏洞是指,错误设置 Web 服务 器,或是由设计上的一些问题引起的安全漏洞。
1.强制浏览
强制浏览(Forced Browsing)安全漏洞是指,从安置在 Web 服务器 的公开目录下的文件中,浏览那些原本非自愿公开的文件。

2.不正确的错误消息处理
不正确的错误消息处理(Error Handling Vulnerability)的安全漏洞是 指,Web 应用的错误信息内包含对攻击者有用的信息。与 Web 应用 有关的主要错误信息如下所示。 Web 应用抛出的错误消息 数据库等系统抛出的错误消息.

3.开放重定向
开放重定向(Open Redirect)是一种对指定的任意 URL作重定向跳转 的功能。而于此功能相关联的安全漏洞是指,假如指定的重定向 URL 到某个具有恶意的 Web 网站,那么用户就会被诱导至那个 Web 网 站。

因会话管理疏忽引发的安全漏洞
会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有 所疏忽,就会导致用户的认证状态被窃取等后果。
1.会话劫持
会话劫持(Session Hijack)是指攻击者通过某种手段拿到了用户的会 话 ID,并非法使用此会话 ID 伪装成用户,达到攻击的目的。

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

3.跨站点请求伪造
跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击 者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信 息或设定信息等某些状态更新,属于被动攻击。

其他安全漏洞
1.密码破解
2.点击劫持(Clickjacking)是指利用透明的按钮或链接做成陷阱,覆盖 在 Web 页面之上。
3.DoS 攻击(Denial of Service attack)是一种让运行中的服务呈停止状 态的攻击。有时也叫做服务停止攻击或拒绝服务攻击。DoS 攻击的对 象不仅限于 Web 网站,还包括网络设备及服务器等。
4.后门程序(Backdoor)是指开发设置的隐藏入口,可不按正常步骤使 用受限功能。利用后门程序就能够使用原本受限制的功能。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值