Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

读书笔记-《图解HTTP》 #5

Open
ycshill opened this issue Nov 6, 2018 · 0 comments
Open

读书笔记-《图解HTTP》 #5

ycshill opened this issue Nov 6, 2018 · 0 comments

Comments

@ycshill
Copy link
Owner

ycshill commented Nov 6, 2018

第一章 了解web及网络基础

1.1 使用 HTTP 协议访问web

  • 客户端:
    通过发送请求获取服务器资源的web浏览器等;
  • web:
    使用一种名为 HTTP 的协议作为规范,完成从客户端到服务端等一系列运作流程,简单的说 Web 就是建立在 HTTP 协议上通信的;

1.2 HTTP 的诞生

  • www/web 的三项构建技术:
    HTML, HTTP, URL

1.3 网络基础 TCP/IP

  • 协议:
    计算机和网络设备之间相互通信所要遵循的规则;
  • TCP/IP 协议族
    互联网相关的各类协议族的总称;
  • TCP/IP 分层管理
    此处输入图片的描述
  • TCP/IP 通信传输流
    此处输入图片的描述

1.4 与HTTP 关系密切的协议:IP、TCP 和 DNS & 1.5 负责域名解析的DNS服务 & 1.6 各种协议与HTTP协议的关系

  • IP 协议:
    IP 协议是在源地址和目的地址之间传送一种称为数据包的东西;

    此处输入图片的描述

  • TCP 协议
    TCP 协议是提供可靠的字节流服务;

    • 可靠:确保数据能够精确可靠的传给对方(三次握手);
    • 字节流服务:为了传输方便,将大块数据分割为以报文段为单位的数据包进行管理;

    此处输入图片的描述

  • DNS 服务
    提供域名到IP地址之间的解析服务;

    此处输入图片的描述

  • 在使用 HTTP 协议通信的过程中,IP 协议、TCP 协议 和 DNS 服务 起到的作用:

此处输入图片的描述

1.7 URI 和 URL

  • url 的格式:
    此处输入图片的描述

第一章总结

此处输入图片的描述

第二章 简单的HTTP协议

POST/GET

  • POST:主要用来传输实体
  • GET:获取资源

TCP的短连接,持久化链接,管线化

  • HTTP 协议是无状态的:
    HTTP 协议是无状态的,简单说就是打开一个服务器上的网页和之前打开的网页之间没有任何的联系,比如,你登录了一个网站,跳转到其他的页面,登录的这些信息就不存在了。
  • TCP 短连接:
    • 概念:浏览器和服务器每进行一次HTTP操作,就建立一个连接,但是任务中断就结束连接
    • HTTP/1.0中,默认使用的是短连接
    • 形象描述:...建立HTTP连接-->HTTP请求/响应-->断开TCP连接-->建立HTTP连接-->HTTP请求/ian响应-->断开TCP连接...
    • TCP 持久化链接:
      • 概念:当浏览器和服务器建立了连接后,只要是任意一方没有明确的提出断开连接,则保持TCP连接状态
    • HTTP/1.1 起,默认使用长连接,如果是长连接,可以在浏览器中的request headers 中看到 contention: keep-alive 字段;
      • 形象描述:建立HTTP连接-->...HTTP请求/响应-->HTTP请求/响应...断开TCP连接
      • 如何开启长连接:需要在http头加入contention: Keep-Alive
      • 如何关闭长连接:需要在httptou头加入Connection: close
    • TCP 管线化:
      • 概念:简单的理解就是批量请求的长连接,不需要等待响应;
      • 形象描述:``请求1--> 请求2--> 响应1-- > 响应2

Cookie

HTTP 协议是无状态的,为了想保留某些状态,引入了cookie;
本来想写点,但是看了一篇博客,感觉写得非常好,就把地址粘在这里吧https://segmentfault.com/a/1190000004556040

第四章 返回结果的 HTTP 状态码

状态码 场景描述
200 客户端发来的请求在服务端已正常处理
204 请求已经处理,但是没有资源可以返回
206 对资源的某一个部分进行请求
301 永久性重定向,资源的URI已经更新
302 临时重定向,资源的URI已临时定位其他资源
303 临时重定向,资源的URI已临时定位其他资源,要使用GET
304 资源已经找到,但是未符合条件
307 临时重定向,资源的URI已临时定位其他资源
400 请求报文中存在语法错误
401 需要认证
403 资源不允许访问
404 没有找到资源
500 服务器内部资源出故障
503 服务器处于超负载或者停机维护

第五章 与HTTP协作的web服务

代理

是客户端和服务器端的中间人,是一种有转发功能的应用程序;代理服务器的基本行为就是接收客户端发送的请求后转发(不会改变URI)给其他的服务器;
此处输入图片的描述
- 缓存代理
代理转发响应的时候,会预先将资源的副本保存到代理服务器上,当代理再次接收相同的资源请求时,就可以将之前缓存的资源作为响应返回。

网关

网关是转发其他服务器通信数据的服务器。当接收到客户端的请求的时候,它就像是自己拥有其他服务器的资源一样来处理。网关能使通信线路上的协议提供非HTTP协议服务。
此处输入图片的描述

隧道

隧道可按要求建立起一条与其他服务器通信线路。

第五章 HTTP 首部

概念

HTTP 首部可以在客户端和服务器端传递额外重要的信息;

HTTP/1.1 通用首部字段

  • Cache-Control
    可以操作缓存服务器的缓存机制;

    参数名称 作用
    public 表明其他的与欧诺个户用户也可以利用的缓存
    private 缓存只是给指定的用户用
    no-cache 不缓存过期的资源(do not serve from cahce without reavalidation)
    no-store 不进行缓存,暗示请求和响应中包含有机密信息
    max-age=600800(秒) 缓存的最长时间,如果有expires的时候,会忽略掉这个字段
    min-fresh=60(秒) 过了60秒后缓存就无法作为响应返回了
    only-if-cached 仅在缓存服务器本地缓存目标资源的情况下才会返回
    must-revalidate 代理会向源服务器再次验证即将返回的响应
    no-transform 缓存不能改变主体的媒体类型
  • Connection

    参数名称 作用
    close 首部字段不再转发给代理
    Keep-Alibe 缓存只是给指定的用户用
  • Date
    HTTP 报文的日期和时间

  • Transfer-Encoding
    采用哪种编码方式进行发送

    参数名称 作用
    chunked 采用分块的方式
  • Via
    报文经过的传输路径(网关或者代理)

  • Warning
    通知用户一些和缓存相关的问题警告;

    警告码 警告内容 说明
    110 响应已过期 代理返回已过期的资源
    111 再验证失败 代理再次验证资源的有效性的时失败(服务器无法到达等原因)
    112 断开连接操作 代理与互联网的连接故意被切断
    113 试探性过期 响应超过最大限定时间
    119 杂项警告 任意的警告内容
    214 使用了转换 代理对内容编码或者媒体类型执行了某些操作
    299 持久杂项警告 任意的警告内容

请求首部字段

  • Accept
    • 通知服务器端,用户代理能够处理的媒体类型和媒体类型的相对优先级
    • 格式: Accept: text/html; q=0.3; text/plian
  • Accept-Charset
    • 通知服务器,用户代理支持的字符集以及字符集的相对优先顺序;
    • Accept-Charset: iso-8859-5, unicode-1-1; q=0.8
  • Accept-Encoding
    • 通知服务器,用户代理支持的内容编码以内容编码的优先级顺序;

    • Accept-Encoding: gzip

      名称 说明
      gzip 由文件压缩程序gzip生成的编码格式
      identity 不执行压缩或不会变化的默认格式
  • Accept-Language
    • 告诉服务器用户代理能够处理的自然语言集
    • Accept-Language: zh-cn
  • Host
    • 告诉服务器,请求资源所处的互联网主机名和端口号
    • Host: www.hackr.jp
  • if-modified-since
    如果在if-modified-since字段指定的日期时间后,资源发生了更新,服务器会接受请求;
  • max-forwards
    最大的转发次数
  • range
    • 告知服务器,获取指定范围的资源
    • range: bytes=5001-10000 请求获取从第5001字节到10000字节的资源;
  • user-agent
    用户传达浏览器的种类;

响应首部字段

  • Age
    告诉客户端,源服务器在多久前创建了响应。zi'duan'z字段值的单位为秒;

  • Etag
    可将资源以字符串的形式做唯一性标识的方式,资源的URI虽然没有变,但是当资源更新后,ETAG值会改变;

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

  • 实体首部字段

  • Allow
    告诉客户端能够支持的所有HTTP方法;

  • Content-Length
    实体主体部分的大小,** 对实体主体进行内容编码传输的时候,不能再使用content-length;

  • 为cookie 服务的首部字段

    字段名 说明 首部类型
    set-cookie kai'shi开始状态管理所使用的cookie信息 响应首部字段
    cookie 服务器接收到的cookie信息 请求首部字段
  • set-cookie 字段的属性

    属性 说明
    name=value 给cookie的名称和值
    expires=date cookie的有效期
    path=Path 限定cookie 的发送范围的文件目录
    domain=域名 作为cookie适用对象的域名
    secure 仅在HTTP安全通信时才会发送cookie
    HttpOnly 加以限制,使Cookie不能被javascript脚本访问

第七章 确保Web安全的HTTPS

HTTP 的缺点:

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

  • HTTP 本身不具备加密的功能,所以无法做到对通信整体进行加密;
  • TCP/IP 是可能被窃听的网络
    TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视;
  • 加密处理
    • 通信的加密
      • HTTP 协议没有加密机制,可以通过和 SSL (安全套阶层) 或 TLS (安全层传输协议)的组合使用,加密HTTP的通信内容;
      • 与SSL组合使用的HTTP被称为HTTPS
    • 内容加密
      • 对HTTP协议传输的内容进行加密,这种加密,要求客户端和服务端同时具备加密和解密的机制

不验证通信方的身份,可能遭到伪装

  • 在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求;
  • 查明对手的证书
    • 技术:SSL。SSL不仅提供加密处理,而且还使用了一种称为证书(证书是由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在)的手段,用于确定方。
      此处输入图片的描述

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

  • 接收到的内容可能有误
    由于HTTP 无法证明通信报文的完整性,说以即使请求或者响应的内容遭到了篡改(中间人攻击),也没有办法获悉。
  • 如何防止被篡改
    • MD5算法:利用MD5算法生成散列值;
    • PGP(完美隐私):利用PGP创建数字签名;
      虽然有以上的方法,但是这些方法无法百分百的保证确认结果,因为PGP或MD5也可能被改写,为了防止这些弊端,有必要使用HTTPS。
  • HTTPS = HTTP + 加密 + 认证 + 完整性保护
  • HTTPS 并不是一种新的协议,只是HTTP通信接口部分用SSL和TLS协议代替而已。例如,HTTP直接和TCP通信,使用了SSL时候,就会演变为先和SSL通信,再由SSL和TCP通信。
    此处输入图片的描述

加密技术

共享密钥加密/对称密钥加密

  • 概念:信息的发送方和信息的接收方使用 同一套密码 进行加密和解密;
  • 共享密钥加密可以理解为服务器为了数据传输安全,送给你了一把钥匙,这把钥匙可以把数据在盒子里,也可以打开已经锁上的盒子。当数据发送到服务器时,服务器会用同样的钥匙打开盒子。
    此处输入图片的描述
  • 缺点:密钥有很大的风险可能会被黑客拦截;
  • 优点:处理速度快;
  • 总结:这个例子可以简单的理解为:小红和小花是朋友,小花家的门有一个钥匙,有一天为了方便,配了个钥匙给小红,从此小红就可以随便的进出小花家了,但是钥匙得好好保存,万一被小偷得到,就也可以随便进出小花家了。

公开密钥加密/非对称加密

  • 概念:公开密钥有 一对非对称的密钥,一把公开密钥,一把私有密钥,公开密钥可以发送给任何发送请求方,而私有密钥 只有一方有,一对中的一把密钥加密后,只能用另外一个进行解密,即使是自己也不可以解密
  • 公开密钥加密可以理解为,服务器首先给发送请求的客户端发送了一个公开密钥**(公钥可以发给任何请求方)**,客户端收到好,对报文进行加密后,发送给服务器,服务器再用独有的私钥进行解密。
    此处输入图片的描述
  • 优点:防止在传输过程中被获取密钥;
  • 缺点:处理速度慢;
  • 公钥用来进行加密,私钥用来数字签名

混合加密机制

  • 概念:混合使用公开密钥加密和共享密钥加密,在交换密钥的环节采用公开密钥加密,之后建立的通信报文阶段则使用共享密钥加密,这样既可以避免密钥被盗取,又可以提高通信的效率;
    此处输入图片的描述
  • HTTPS 采用的混合加密机制;

数字签名

  • 概念
    一封信中,文末的签名是为了证明这封信是签名者写的,同理,数字签名也是为了证明某个消息是特定的某个人发的(有效性);同时,数字签名还能证明消息没有被篡改(完整性);
  • 作用
    • 有效性;
    • 完整性;
  • 如何生成数字签名
    一般不对消息直接进行签名,而是对消息的哈希值进行签名。
    • 对消息进行哈希计算,得到哈希值;
    • 利用私钥对哈希值进行加密,生成数字签名;
    • 将签名附件在消息后面,一起发送过去;
  • 验证签名
    • 收到消息后提取消息中的签名;
    • 用公钥对签名进行解密,得到哈希值1;
    • 对消息中的正文进行计算得到哈希值2;
    • 比较哈希值1和哈希值2,如果相同,则验证成功;

证书

  • 概念:
    证书其实就是对公开加密方法中的公钥进行加密,是对公钥的合法性提供证明的技术;
  • 作用:
    • 认证服务器的公开密钥是真实有效的数字证书认证机构;
    • 服务器的公开密钥是值得信赖的;
  • 认证机构
    可以使用数字认证机构(CA)和其他相关的机关颁发公开的密钥证书(就像是银行);
  • 证书种类
    • EV SSL 证书
      EV SSL证书可以证明作为通信一方的服务器是否规范,同时也可以确认服务器背后运营的企业是否是真实存在的。
    • 客户端证书
      证明服务器正在通信的对方始终是预料之内的客户端;
    • 自签名证书
      • 概念:由自认证机构(独立构建的认证机构)颁发的证书称为自签名证书;
      • 浏览器访问该服务器的时候,会显示“无法确认连接安全性”或“该网站的安全可能存在问题”等警告;
      • 由自认证机构颁发的服务器证书之素哟所以不起作用,是因为它无法消除伪装的可能性(就像是跑路的p2p公司);
  • 生成证书
    • 服务器会将公钥A给CA(公钥是服务器的);
    • CA用自己的私钥B对A进行加密,生成数字签名C;
    • CA把公钥A,数字签名C,和附加服务器的一些信息生成证书,发给服务器;
  • 验证证书
    多数浏览器会将开发商发布版本的时候,会事先在内部植入常用的认证机关的公开密钥;
    • 客户端得到证书;
    • 客户端得到证书公钥D;
    • 客户端用公钥D对证书中的数字签名进行解密,得到哈希值1;
    • 客户端对公钥A进行哈希值计算,得到哈希值2;
    • 如果哈希值1和哈希值2相等,则证书是合法的;
  • 证书作废
    当用户私钥丢失或者被盗,认证机构需要对证书进行作废;

总结

https的通信流程(阮大神的一篇博文):http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

第八章 确认访问用户身份的认证

何为认证

  • 概念:
    就像是你买的保险箱只想某些人可以看一样,网页上的web页面也有可能只想特定的人浏览,这就少不了认证功能了,简单的说,认证就是判断访问服务器者的身份
  • 核对信息通常有以下几点:
    • 密码:只有本人才会知道的字符串信息;
    • 动态令牌:仅限本人持有的设备内显示的一次性密码;
    • 数字证书:仅限本人(终端)持有的信息;
    • 生物认证:指纹和虹膜等本人的生理信息;
    • IC 卡等: 仅限本人持有的信息;
  • HTTP 使用的认证方式
    • BASIC 认证 (基本认证,不常用)
    • DIGEST 认证 (摘要认证,不常用)
    • SSL 客户端认证 (付费)
    • FormBase 认证 (基于表单的认证)

BASIC 认证步骤

此处输入图片的描述

  • 缺点:
    • 不够灵活;
    • 没有办法达到Web网站的安全性等级;

DIGEST 认证

此处输入图片的描述

  • 缺点:
    • 不够灵活;
    • 防止了密码被窃取的风险,但是没有防止用户伪装的机制;

SSL 客户端认证

  • 概念:SSL 客户端认证是借由HTTPS的客户端证书完成认证的方式,要完成这种认证,需事先将客户端证书分发给客户端,且客户端必须安装此证书
  • 认证步骤
    • 接收到需要认证资源的请求,服务器会发送 Certificate(证书) Request,要求客户端提供客户端证书;
    • 用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certificate 报方式发送给服务器;
    • 服务器验证客户端证书验证通过后方可领取证书内客户端的公开密钥,然后开始HTTPS加密通信;
  • SSL 客户端认证需要费用
    一般这部分费用是:
    • 认证机构购买客户端证书的费用;
    • 服务器运营者为保证自己搭建的认证机构安全运营所产生的费用;
    • 自己搭建的认证机构,为维持安全运行产生的费用;

表单认证

  • 概念:
    客户端会向服务器上的Web应用程序发送登录信息,按登录信息的验证结果认证;
  • session 管理及Cookie应用
    因为HTTP是无状态协议,所以一般使用 Cookie 来管理 Session;
  • 步骤
    • 客户端把用户ID和密码等登录信息放入报文的实体部分,通常是以POST方法把请求发送给服务器;
    • 服务器在Set-Cooki中写入Session ID (区分不同用户的等位号,为了防止被盗,session id 应该使用难以推测的字符串,且服务器也需要进行有效期的管理,为了保证安全建议在Cookie内写httponly)
    • 客户端收到从服务器发来的Session ID 后,会将其作为Cookie保存在本地,下次向服务器发送请求时,浏览器会自动发送Cookie;

双因素认证

SSL客户端认证和表单认证结合,SSL客户端认证来认证客户端的计算机,而表单认证来确定用户本人的行为;

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

HTTP 通信的瓶颈

  • HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个资源,浏览器只能通过建立多个连接来解决;
  • 请求只能从客户端开始,客户端不可以接受响应以外的指令;
  • 请求/响应首部未经压缩就发送,首部信息越多越延迟
  • 发送冗长的首部,每次互相发送相同的首部造成浪费较大;
  • 可任意的选择数据压缩格式,非强制的压缩发送;
    例如论坛上,成千上万的用户发布内容的时候,web网站需要及时的更新,而使用HTTP协议探知服务器上是否有内容更新,就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新,就会产生徒劳的通信。

Ajax 解决办法

Ajax的核心技术是XMLHttpRequest的API,通过javascript的脚本的调用就能和服务器进行HTTP通信了,借由这种手段,就能从已经加载完毕web页面上发起请求,只更新局部页面。

Comet 的解决办法

使用延迟应答,模拟实现服务器向客户端进行推送的功能。
通常,服务器端接收到请求,在处理完毕后就会立即响应,但是为了实现推送功能,Comet会先将响应置于挂起的状态,等服务器端有内容更新的时候,再返回响应。

  • 缺点:内容上做到了实时更新,但是为了保留响应,一次连接的持续时间也会变长,为了维持连接,会消耗更多的资源。

SPDY

SPDY是Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 SPDY 成为正式标准(现为互联网草案)。
此处输入图片的描述

  • 优点:
    • 多路复用,请求优化
      允许一个SPDY连接内可以有无限个并行请求,即允许多个并发HTTP请求公用一个TCP会话。这样这要建立一个TCP连接,就可以传送网页上所有资源,不仅可以减少消息交互往返的时间还可以避免创建新连接造成的延迟,使得 TCP 的效率更高。
      可以设置优先级,会选择性的先传输 CSS 这样更重要的资源,然后再传输网站图标之类不太重要的资源,可以避免让非关键资源占用网络通道的问题,提升 TCP 的性能。
    • 支持服务器推送技术
      服务器可以主动向客户端发起通信向客户端推送数据,这种预加载可以使用户一直保持一个快速的网络。
    • 压缩HTTP头部;
      舍弃掉了不必要的头信息,经过压缩之后可以节省多余数据传输所带来的等待时间和带宽。
    • 强制使用SSL传输协议;
  • Chrome 已经移除了SPDY, 后来SPDY变成了HTTP/2;

WebSocket

HTTP/2.0

支持HTTP2.0的条件

  1. 需要浏览器的支持,目前最新版的 Chrome、Opera、 FireFox、 IE11、 edge 都已经支持了;
  2. 需要 WEB 服务器的支持,比如 Nginx , H20;
    如何浏览器或者服务器有一方不支持,就会自动变为HTTP/1.1

HTTP/2.0 改进点

HTTP/2.0 性能增强的核心:二进制分帧

在应用层和传输层之间增加了一个二进制分帧层,以达到“在不改动HTTP语义,HTTP方法、状态码、URI机及首部字段的情况下,突破HTTP/1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量”;
此处输入图片的描述

在二进制分帧层上,HTTP2.0 会将所有的信息分割为更小的消息和,并对它们采用二进制格式的编码,其中HTTP1.X 的首部信息会被封装到Headers帧,而request body则封装到Data帧里

HTTP2.0 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。每个数据流以消息的形式发送,而消息又是由一个或者多个组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装;

压缩头部

HTTP/2.0规定了在客户端和服务器端会**使用并且维护「首部表」**来跟踪和存储之前发送的键值对,对于相同的头部,不必再通过请求发送,只需发送一次

如果请求中不包含首部,那么首部的开销就是零字节,此时所有的首部都自动使用之前请求发送的首部;如果首部发变化了,那么只需要发送变化了数据在Headers帧里面,新增或者修改的首部帧会被追加到“首部表”。首部表在HTTP2.0连接存续4qi期内始终的存在,由客户端和服务器共同渐进地更新。

多路复用

HTTP2.0所有的通信都是在一个TCP连接上完成的。HTTP2.0 把 HTTP 协议通信的基本单位缩小为一个个的帧,这些帧对应着逻辑流中的消息。**这些帧并行地同在一个TCP连接上双向交换消息。**也就是说同一链接上有多个不同方向的数据流在传输。客户端可以一边乱序发送streams,也可以一边接收服务器的响应,而服务器端同理。

  • 优点
    HTTP性能的关键在于低延迟,而不是高带宽。大多数的HTTP连接的时间短,而且是突发性的,但是TCP只在长时间连接传输大块数据时效率才最高。HTTP2.0 通过让所有的数据流公用一个连接,可以更有效地使用TCP连接,让高带宽也能真正服务于HTTP的性能。
    同时,单链接多资源的方式,有如下好处:

  • 可以减少服务器的压力,内训占用少,连接的吞吐量大;

  • 由于 TCP 连接减少,使得网络阻塞的情况得以改观;

  • 慢启动时间减少,拥塞和丢包恢复速度更快。

    因此, “资源合并减少请求”的优化手段对于HTTP2.0来说是没有效果的。

请求优先级

既然所有资源都是并行发送,那么就需要“优先级”的概念了,这样就可以对重要的文件进行先传输,加速页面的渲染。

服务器推送

在 HTTP2.0中,服务器推送是指客户端请求之前发送数据的机制。

强制 SSL

虽然 HTTP2.0 协议并没有声明一定要使用SSL,但是Google Chrome 等浏览器强制要使用 HTTP2.0 必须使用SSL。

第11章 Web的攻击技术

针对web的攻击技术

  • 客户端可篡改请求
    在HTTP 请求报文内加载攻击代码,也就是通过URL查询字段或表单、HTTP首部、Cookie等途径把攻击代码传入,如果这时候Web应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到管理权限;
  • 针对 Web 应用的攻击模式
    • 主动攻击
      是通过直接访问Web应用,把攻击代码传入的攻击模式。代表性的是SQL注入攻击命令注入攻击
    • 被动攻击
      利用圈套策略执行攻击代码的攻击模式。
      • ① 攻击者诱使用户出发已经设置好的陷阱,而陷阱会启动发送已嵌入攻
        击代码的HTTP请求;
      • ② 当用户中招后,用户的浏览器或者客户端就会触发陷阱;
      • ③ 中招后的用户浏览器会把含有攻击代码的HTTP请求发送给攻击目标的Web应用,运行攻击代码;
      • ④ 执行完攻击代码,可能导致用户所持的Cookie等个人信息被窃取,登录
        状态中的用户权限遭恶意滥用都能后果;
    • 常见的模式
      • 跨站脚本攻击;
      • 跨站点请求伪造;

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

  • 跨站脚本攻击
  • SQL注入攻击
  • OS 命令注入攻击
  • HTTP 首部注入攻击
  • 邮件首部注入攻击
  • 远程文件包含漏洞

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

因回话管理忽略引发的安全漏洞

其他安全漏洞

  • DOS攻击
  • 点击劫持
  • 密码破解

存疑点

  • 如何实现管线化
  • web攻击

参考文章

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant