• 图解HTTP全


    1、了解 Web 及网络基础

    • URI(统一资源标识符),URL是 URI 的子集

    2、简单的HTTP协议

    • HTTP 是一种不保存状态,即无状态(stateless)协议,但为了实现期望的保持状态功能,于 是引入了 Cookie 技术

    • 持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额 外开销,减轻了服务器端的负载

    • HTTP是无状态的协议,由于不必保存状态,自然 可减少服务器的 CPU 及内存资源的消耗

    • 持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从 前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术 出现后,不用等待响应亦可直接发送下一个请求,这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待 响应了

    3、HTTP 报文内的 HTTP 信息

    • HTTP 报文大致可分为报文首部和报文主体两块

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

    • 报文主体等于实体主体。只有当传输中进行编码操作时,实体 主体的内容发生变化,才导致它和报文主体产生差异

    • 分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六 进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)”来标 记。

    • HTTP 协议中也采纳了多部分对象集合,发送的一份报文主 体内可含有多类型实体。通常是在图片或文本文件等上传时使用

      • multipart/form-data :在 Web 表单文件上传时使用

      • multipart/byteranges:状态码 206(Partial Content,部分内容)响应报文包含了多个范 围的内容时使用。

        • Content-Type: multipart/byteranges; boundary=xxxxx

    • 执行范围请求时,会用到首部字段 Range 来指定资源的 byte 范围。针对范围请求,响应会返回状态码为 206 Partial Content 的响应报 文

      • Range: bytes=5001-10000

    • 内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然 后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字 符集、编码方式等作为判断的基准。包含在请求报文中的某些首部字段(如下)就是判断的基准

      • 服务器驱动协商:由服务器端进行内容协商。以请求的首部字段为参考,在服务器端自 动处理。但对用户来说,以浏览器发送的信息作为判定的依据,并不 一定能筛选出最优内容。

      • 客户端驱动协商:由客户端进行内容协商的方式。用户从浏览器显示的可选项列表中手 动选择。还可以利用 JavaScript 脚本在 Web 页面上自动进行上述选 择。比如按 OS 的类型或浏览器类型,自行切换成 PC 版页面或手机 版页面。

      • 透明协商:是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进 行内容协商的一种方法。

    4、返回结果的 HTTP 状态 码

    • 2XX

      • 200 OK:表示从客户端发来的请求在服务器端被正常处理了。

      • 204 No Content:代表服务器接收的请求已成功处理,但在返回的响应报文中 不含实体的主体部分,另外,也不允许返回任何实体的主体

      • 206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求

    • 3XX

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

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

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

      • 304 Not Modified:表示客户端发送附带条件的请求 时,服务器端允许请求访 问资源,但未满足条件的情况

    • 4XX

      • 400 Bad Request:表示请求报文中存在语法错误。当错误发生时,需修改请求 的内容后再次发送请求

      • 401 Unauthorized:表示发送的请求需要有通过 HTTP 认证(BASIC 认证、 DIGEST 认证)的认证信息

      • 403 Forbidden:表明对请求资源的访问被服务器拒绝了,服务器端没有必要 给出拒绝的详细理由

      • 404 Not Found:表明服务器上无法找到请求的资源

    • 5XX

      • 500 Internal Server Error:表明服务器端在执行请求时发生了错误

      • 503 Service Unavailable:表明服务器暂时处于超负载或正在进行停机维护,现在无法 处理请求

    5、与 HTTP 协作的 Web 服 务器

    • 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路 径上的中转服务器提升传输效率,即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以 假想已具有多台服务器。

    • 如果一台服务器内托管了 www.tricorder.jpwww.hackr.jp 这 两个域名(IP地址一样),当收到请求时就需要弄清楚究竟要访问哪个域名。因此在发送 HTTP 请求时,必须在 Host 首部内完整指 定主机名或域名的 URI

    • 这些应用程序(代理、网关、隧道)和服务器可以将请求转发给通信线路上的下一站服务 器,并且能接收从那台服务器发送的响应再转发给客户端。

    • 代理

      • 代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务 器。代理不改变请求 URI,会直接发送给前方持有资源的目标服务 器。转发时,需要附加 Via 首部字段以标记出经过的主机信息。

      • 使用代理服务器的理由有:利用缓存技术(稍后讲解)减少网络带宽 的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要 目的

      • 代理有多种使用方法,按两种基准分类。一种是是否使用缓存,另一 种是是否会修改报文

        • 代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本 (缓存)保存在代理服务器上。 当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获 取资源,而是将之前缓存的资源作为响应返回。

          • 缓存代理也会有有效期限

        • 转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理 (Transparent Proxy)。反之,对报文内容进行加工的代理被称为非 透明代理。

    • 网关

      • 利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信 线路上加密以确保连接的安全。比如,网关可以连接数据库,使用 SQL语句查询数据。另外,在 Web 购物网站上进行信用卡结算时, 网关可以和信用卡结算系统联动。

    • 隧道

      • 隧道可按要求建立起一条与其他服务器的通信线路,届时使用 SSL等 加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的 通信。

    • 缓存不仅可以存在于缓存服务器内,还可以存在客户端浏览器中,浏览器缓存如果有效,就不必再向服务器请求相同的资源了,可以直 接从本地磁盘内读取。

    6、HTTP 首部

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

      • 通用首部字段

        • 请求报文和响应报文两方都会使用的首部。

        • Cache-Control:就能操作缓存的工作机 制

          • no-cache:客户端将不会接 收缓存过的响应,服务器返回的响应中包含 no-cache 指令,那么缓存服务器不能对 资源进行缓存

          • no-store:暗示请求(和对应的响应)或响应中包含 机密信息,才是真正地不进行缓存

          • max-age:代表缓存的有效时间

        • Connection:控制不再转发给代理的首部字段、管理持久连接

          • 当服务器端想明确断开连接时,则指定 Connection 首部字段的值为 Close

          • 维持持久连接就需要把Connection 首部字段的值为 Keep-Alive

      • 请求首部字段

        • 从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加 内容、客户端信息、响应内容相关优先级等信息。

        • Accept:可通知服务器,用户代理能够处理的媒体类型及媒体 类型的相对优先级

        • Accept-Charset:来通知服务器用户代理支持的字符集及 字符集的相对优先顺序

        • Accept-Encoding:告知服务器用户代理支持的内容编码及 内容编码的优先级顺序

        • Accept-Language:来告知服务器用户代理能够处理的自然 语言集

        • Authorization:来告知服务器,用户代理的认证信息(证 书值)

        • Expect:来告知服务器,期望出现的某种特定行 为。因服务器无法理解客户端的期望作出回应而发生错误时,会返回 状态码 417 Expectation Failed。

        • From:来告知服务器使用用户代理的用户的电子邮件地 址。通常,其使用目的就是为了显示搜索引擎等用户代理的负责人的 电子邮件联系方式

        • Host:首部字段 Host 会告知服务器,请求的资源所处的互联网主机名和端 口号。首部字段 Host 和以单台服务器分配多个域名的虚拟主机的工作机制 有很密切的关联,这是首部字段 Host 必须存在的意义。

        • Proxy-Authorization:接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段 Proxy-Authorization 的请求,以告知服务器认证所需要的信息

        • Range:可告知服 务器资源的指定范围

      • 响应首部字段

        • 从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加 内容,也会要求客户端附加额外的内容信息。

        • Accept-Ranges:告知客户端服务器是否能处理范围请 求,以指定获取服务器端某个部分的资源。可指定的字段值有两种,可处理范围请求时指定其为 bytes,反之则 指定其为 none。

        • Age:告知客户端,源服务器在多久前创建了响应。字段值 的单位为秒。

        • Location :可以将响应接收方引导至某个与请求 URI 位置 不同的资源。 基本上,该字段会配合 3xx :Redirection 的响应,提供重定向的 URI。

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

      • 实体首部字段

        • 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更 新时间等与实体有关的信息。

        • Allow: 用于通知客户端能够支持 Request-URI 指定资源的所 有 HTTP 方法

        • Content-Encoding :会告知客户端服务器对实体的主体部分选 用的内容编码方式

        • Content-Language: 会告知客户端,实体主体使用的自然语言

        • Content-Length :表明了实体主体部分的大小

        • Content-Range:能告知客 户端作为响应返回的实体的哪个部分符合范围请求。字段值以字节为 单位,表示当前发送部分及整个实体大小。

        • Content-Type :说明了实体主体内对象的媒体类型

        • Last-Modified:指明资源最终修改的时间

    • 若 HTTP 首部字段重复了会如何?

      • 这种情况在规范内尚未明确,根据浏览器内部处理逻辑 的不同,结果可能并不一致。有些浏览器会优先处理第一次出现的 首部字段,而有些则会优先处理最后出现的首部字段。

    • HTTP 首部字段将定义成缓存代理和非缓存代理的行为

      • 端到端首部:分在此类别中的首部会转发给请求 / 响应对应的最终接收目标,且必 须保存在由缓存生成的响应中,另外规定它必须被转发。

      • 逐跳首部:分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再 转发。包含的字段有:Connection、 Keep-Alive 、Proxy-Authenticate 、Proxy-Authorization、 Trailer 、TE 、Transfer-Encoding、 Upgrade

    • Cookie 的工作机制是用户识别及状态管理,调用 Cookie 时,由于可校验 Cookie 的有效期,以及发送方的域、路 径、协议等信息,所以正规发布的 Cookie 内的数据不会因来自其他 Web 站点和攻击者的攻击而泄露。

    • 为 Cookie 服务的首部字段

      • Set-Cookie:当服务器准备开始管理客户端的状态时,会事先告知各种信息。

      • Cookie :首部字段 Cookie 会告知服务器,当客户端想获得 HTTP 状态管理支 持时,就会在请求中包含从服务器接收到的 Cookie。接收到多个 Cookie 时,同样可以以多个 Cookie 形式发送

    7、确保 Web 安全的 HTTPS

    • HTTP 的缺点

      • 通信使用明文(不加密),内容可能会被窃听

        • 通信的加密,结合SSL使用

        • 内容的加密:把 HTTP 报文里所含的内容进行加密处理

      • 不验证通信方的身份,因此有可能遭遇伪装

        • 可能出现DoS 攻击(Denial of Service,拒绝服务攻击)

        • 虽然使用 HTTP 协议无法确定通信方,但如果使用 SSL则可以。 SSL不仅提供加密处理,而且还使用了一种被称为证书的手段, 可用于确定方

      • 无法证明报文的完整性,所以有可能已遭篡改

        • 请求或响应在传输途中,遭攻击者拦截并篡改内容的攻 击称为中间人攻击(Man-in-the-Middle attack,MITM)

        • 常用的是 MD5 和 SHA-1 等散列值校验的方法, 以及用来确认文件的数字签名方法

    • SSL采用一种 叫做公开密钥加密(Public-key cryptography)的加密处理方式

    • 在交换密钥环节使用公开密钥加密方式,之后的建立通信交 换报文阶段则使用共享密钥加密方式。

    • 数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构。数字证书认证机构的业务流程:首先,服务器 的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证 机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签 名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书 后绑定在一起。

    • HTTPS 的通信步骤:

      • 步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。报文中包 含客户端支持的 SSL的指定版本、加密组件(Cipher Suite)列表(所 使用的加密算法及密钥长度等)

      • 步骤 2: 服务器可进行 SSL通信时,会以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL版本以及加密组件。服务器的 加密组件内容是从接收到的客户端加密组件内筛选出来的

      • 步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开密钥证 书。

      • 步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶 段的 SSL握手协商部分结束。

      • 步骤 5: SSL第一次握手结束之后,客户端以 Client Key Exchange 报 文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤 3 中的公开密钥进行加密。

      • 步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提 示服务器,在此报文之后的通信会采用 Pre-master secret 密钥加密。

      • 步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的 整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确 解密该报文作为判定标准。

      • 步骤 8: 服务器同样发送 Change Cipher Spec 报文。

      • 步骤 9: 服务器同样发送 Finished 报文。

      • 步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL连接 就算建立完成。当然,通信会受到 SSL的保护。从此处开始进行应用 层协议的通信,即发送 HTTP 请求。

      • 步骤 11: 应用层协议通信,即发送 HTTP 响应。

      • 步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报 文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。

    • HTTPS 使用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security)这两个协议。TSL是以 SSL为原型开发的协议,有时会统一称该协议 为 SSL。当前主流的版本是 SSL3.0 和 TLS1.0。

    • HTTPS相比于HTTP的速度:

      • SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗 CPU 及内存等资源,导致处理速度变慢。

      • 和使用 HTTP 相比,网络负载可能会变慢 2 到 100 倍。除去和 TCP 连接、发送 HTTP 请求 • 响应以外,还必须进行 SSL通信, 因此整体上处理通信量不可避免会增加

      • 另一点是 SSL必须进行加密处理。在服务器和客户端都需要进行 加密和解密的运算处理。因此从结果上讲,比起 HTTP 会更多地 消耗服务器和客户端的硬件资源,导致负载增强。

    • 为什么不一直使用 HTTPS?

      • 因为与纯文本通信相比,加密通信会消耗更多的 CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,平 摊到一台计算机上时,能够处理的请求数量必定也会随之减少。

      • 会有购买证书的开销。

    8、确认访问用户身份的认 证

    • HTTP/1.1 使用的认证方式如下

      • BASIC 认证:是 Web 服务器与通信 客户端之间进行的认证方式

        • 缺点:BASIC 认证虽然采用 Base64 编码方式,但这不是加密处理。如果被人窃听,被盗的可能性极高

      • DIGEST 认证:为弥补 BASIC 认证存在的弱点,从 HTTP/1.1 起就有了 DIGEST 认 证。 DIGEST 认证同样使用质询 / 响应的方式

      • SSL 客户端认证:如果用户 ID 和密码被盗,就很有可能被 第三者冒充。利用 SSL客户端认证则可以避免该情况的发生。SSL客户端认证是借由 HTTPS 的客户端证书完成认证的方式。

        • 步骤 1: 接收到需要认证资源的请求,服务器会发送 Certificate Request 报文,要求客户端提供客户端证书。

        • 步骤 2: 用户选择将发送的客户端证书后,客户端会把客户端证书信 息以 Client Certificate 报文方式发送给服务器。

        • 步骤 3: 服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始 HTTPS 加密通信。

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

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

        • 步骤 1: 客户端把用户 ID 和密码等登录信息放入报文的实体部分, 通常是以 POST 方法把请求发送给服务器。而这时,会使用 HTTPS 通信来进行 HTML表单画面的显示和用户输入数据的发送。

        • 步骤 2: 服务器会发放用以识别用户的 Session ID。通过验证从客户 端发送过来的登录信息进行身份认证,然后把用户的认证状态与 Session ID 绑定后记录在服务器端。

        • 步骤 3: 客户端接收到从服务器端发来的 Session ID 后,会将其作为 Cookie 保存在本地。下次向服务器发送请求时,浏览器会自动发送 Cookie,所以 Session ID 也随之发送到服务器。服务器端可通过验证 接收到的 Session ID 识别用户和其认证状态。

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

    • 使用 HTTP 协议探知服务器上是否有内容更新,就必须频繁地从客户 端到服务器端进行确认。如果服务器上没有内容更新,那么就会产生 徒劳的通信。解决方法如下:

      • Ajax 的解决方法

      • Comet 的解决方法

      • SPDY的目标:SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP 建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方 法、 Cookie 以及 HTTP 报文等。

        • 多路复用流 :通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求 的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高。

        • 赋予请求优先级 :SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先 级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响 应变慢的问题。

        • 压缩 HTTP 首部 压缩 HTTP 请求和响应的首部。这样一来,通信产生的数据包数量和 发送的字节数就更少了。

        • 推送功能 支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送 数据,而不必等待客户端的请求。

        • 服务器提示功能 服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源 之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求。


    • WebSocket 出现的原因?

      • 利用 Ajax 和 Comet 技术进行通信可以提升 Web 的浏览速度。但问题 在于通信若使用 HTTP 协议,就无法彻底解决瓶颈问题。WebSocket 网络技术正是为解决这些问题而实现的一套新协议及 API。WebSocket即Web 浏览器与 Web 服务器之间全双工通信标准

      • 一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接, 之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送 JSON、XML、HTML或图片等任意格式的数据

    • WebSocket 协议的主要特点

      • 推送功能 :支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发 送数据,而不必等待客户端的请求。

      • 减少通信量: 只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相 比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息 很小,通信量也相应减少了。

    • 怎样建立WebSocket 通信?

      • 在 HTTP 连接建立之后,需要完成一 次“握手”(Handshaking)的步骤

      • 握手请求:为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字 段,告知服务器通信协议发生改变,以达到握手的目的。 Upgrade: websocket

      • 握手响应:对于之前的请求,返回状态码 101 Switching Protocols 的响应。HTTP/1.1 101 Switching Protocols

    • HTTP 2.0 功能

      • HTTP Speed + Mobility 由微软公司起草,是用于改善并提高移动端 通信时的通信速度和性能的标准

      • Network-Friendly HTTP Upgrade 主要是在移动端通信时改善 HTTP 性 能的标准。

    • Web 服务器管理文件的 WebDAV

      • 除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编 辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的 版本控制功能。

    • 为何 HTTP 协议受众如此广泛?

      • 一般公司都会开放对 Web 的访问。Web 是基于 HTTP 协议运作的,因此在构建 Web 服务器或访问 Web 站点时,需事先 设置防火墙 HTTP(80/tcp)和 HTTPS(443/tcp)的权限。防火墙的基本功能就是禁止非指定的协议和端口号的数据包通 过。因此如果使用新协议或端口号则必须修改防火墙设置

    10、构建 Web 内容的技术

    • HTML5 标准不仅解决了浏览器之间的兼容性问题,并且可把文本作 为数据对待,更容易复用,动画等效果也变得更生动

    • DOM 是用以操作 HTML文档和 XML文档的 API(Application Programming Interface,应用编程接口)。使用 DOM 可以将 HTML内 的元素当作对象操作,如取出元素内的字符串、改变那个 CSS 的属 性等,使页面的设计发生改变。

    • XML(eXtensible Markup Language,可扩展标记语言)是一种可按应 用目标进行扩展的通用标记语言

    • CGI(Common Gateway Interface,通用网关接口)是指 Web 服务器在 接收到客户端发送过来的请求后转发给程序的一组机制

    • RSS(简易信息聚合,也叫聚合内容)和 Atom 都是发布新闻或博客 日志等更新信息文档的格式的总称。两者都用到了 XML。

    11、Web 的攻击技术

    • 对 Web 应用的攻击模式

      • 主动攻击(active attack)是指攻击者通过直接访问 Web 应用, 把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的 资源进行攻击,因此攻击者需要能够访问到那些资源。

        • 代表性攻击方式:SQL注入攻击OS 命令注 入攻击

      • 被动攻击(passive attack)是指利用圈套策略执行攻击代码的攻 击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访 问发起攻击。

        • 代表性的攻击是跨站脚本攻击跨站点请求 伪造

    • 实施 Web 应用的安全对策可大致分为以下两部分

      • 客户端的验证

      • Web 应用端(服务器端)的验证

        • 输入值验证

        • 输出值转义

    • 跨站脚本攻击(XSS)

      • 指通过存在安全漏洞的 Web 网站注册用户的浏览器内运行非法的 HTML标签或 JavaScript 进 行的一种攻击。

      • 造成的影响

        • 利用虚假输入表单骗取用户个人信息。

        • 利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下, 帮助攻击者发送恶意请求。

        • 显示伪造的文章或图片。

      • 为减轻跨站脚本攻击(XSS)造成的损失,建议事先在 Cookie 内加上 httponly 属性

    • SQL注入攻击

      • 指针对 Web 应用使用的数据库,通 过运行非法的 SQL而产生的攻击。SQL注入是攻击者将 SQL语句改变成开发者意想不到的形式以 达到破坏结构的攻击

      • SQL注入攻击有可能会造成以下等影响

        • 非法查看或篡改数据库内的数据

        • 规避认证

        • 执行和数据库服务器业务关联的程序等

    • OS 命令注入攻击

      • 指通过 Web 应用,执行 非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的地 方就有存在被攻击的风险

      • OS 命令注入攻击可以向 Shell 发送命令,让 Windows 或 Linux 操作系 统的命令行启动程序。也就是说,通过 OS 注入攻击可执行 OS 上安 装着的各种程序。

    • HTTP 首部注入攻击

      • 是指攻击者通过在响应 首部字段内插入换行,添加任意响应首部或主体的一种攻击

      • HTTP 首部注入攻击有可能会造成以下一些影响

        • 设置任何 Cookie 信息

        • 重定向至任意

        • URL 显示任意的主体(HTTP 响应截断攻击)

    • 跨站点请求伪造

      • 是指攻击 者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信 息或设定信息等某些状态更新,属于被动攻击。

      • 可能会造成以下等影响

        • 利用已通过认证的用户权限更新设定信息等

        • 利用已通过认证的用户权限购买商品

        • 利用已通过认证的用户权限在留言板上发表言论

    • 邮件首部注入攻击

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

    • 目录遍历攻击

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

    • 远程文件包含漏洞

      • 是指当部分脚本内容需要 从其他文件读入时,攻击者利用指定外部服务器的 URL充当依赖文 件,让脚本读取之后,就可运行任意脚本的一种攻击。

    • 开发重定向

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

    • 会话劫持

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

      • 攻击者可获得会话 ID 的途径

        • 通过非正规的生成方法推测会话 ID

        • 通过窃听或 XSS 攻击盗取会话 ID

        • 通过会话固定攻击(Session Fixation)强行获取会话 ID

    • 会话固定攻击

      • 会强制用户使用攻击者指定的会话 ID,属 于被动攻击。

    • 其他安全漏洞

      • 密码破解

      • 点击劫持

      • DoS 攻击:是一种让运行中的服务呈停止状 态的攻击。有时也叫做服务停止攻击或拒绝服务攻击。DoS 攻击的对 象不仅限于 Web 网站,还包括网络设备及服务器等

  • 相关阅读:
    ueditor 视频上传 cookie丢失问题
    asp分块读取解决ueditor 上传文件200K限制问题
    thinkcmf上传到阿里云虚拟主机后报错
    TP5 apache服务器fastcgi模式下rewrite重写
    Nginx实战之反向代理WebSocket的配置实例
    CentOS7安装Supervisor
    webservice发送带有头信息的数据
    分布式系统 杂记
    docker网络学习笔记
    php 跨域处理
  • 原文地址:https://www.cnblogs.com/zyj23/p/16122720.html
Copyright © 2020-2023  润新知