图解http小记
粗略的读了一下《图解 http》,记录一些东西。
第一章 了解 Web 及网络基础
-
网络基础TCP/IP
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运行。HTTP属于它的一个子集。 -
TCP/IP的分层管理
TCP/IP协议族按层次分为4层:应用层、传输层、网络层、数据链路层。分层优点:如若需要替换某个层的设计,只需保证新的设计满足过去的输入输出即可。
应用层:决定向用户提供应用服务时通信的活动(FTP、DNS、HTTP)
传输层:提供处于网络连接中的两台计算机之间的数据传输。(TCP、UDP)
网络层:处理网络上流动的数据包。规定了通过怎样的路径到达对方计算机。简单说,在网路上选一条合适的路径把数据包传送给对方。
链路层:用来处理网络的硬件部分(所有物理可见部分)。 -
数据流动

-
IP协议:
作用:把各种数据包传送给对方。
两个重要条件:IP地址、MAC地址。
IP地址:一开始已知或域名经过DNS权威服务器解析出IP。
MAC地址:主要在于传输层网络主机的识别,通过与IP地址绑定来唯一标示一个二层网络的主机。通过ARP协议与IP即可反查出MAC地址(MAC地址向下一个查询的原理有点难想通)。 -
TCP协议
作用:将大块数据分割成以报文段为单位的数据包进行管理,并且准确可靠的传输给对方。
三次握手:客户端发出http请求,在传输层TCP发出带有(SYN=0)标记数据包。服务端回复带有(SYN=1)(ACK=0)标记数据包表示接收且需要确认客户端具有接收能力。客户端回复带有(ACK=1)标记数据包表示确认接收。 -
DNS协议
作用:根据域名查询IP,或根据IP反查域名。 -
URI与URL
URI是由某个协议方案表示的资源的定位标识符。
URL是使用HTTP协议标识的资源的定位标识符。
第二章 HTTP 协议
-
HTTP是不保存状态的协议,有利于快速处理事务。
-
HTTP携带cookie可带有状态。
-
常用请求类型
注意点:方法名区分大小写,需要大写。LINK、UNLINK 1.1以后不被支持。
-
持久连接
持久连接的特点是:只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。HTTP/1.1 中,所有的连接默认都是持久连接。 -
管线化
持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。
第四章 HTTP 状态码
- 状态码类别

第五章 与 HTTP 协作的 Web 服务器
-
单虚拟主机与多域名
域名解析成同一个IP,访问时请求头中带有 host 字段,供服务器端判断。 -
通信数据转发程序 :代理、网关、隧道
代理:一种有转发功能的应用程序,它扮演了位于服务器和客户 端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。- 缓存代理
代理转发响应时,缓存代理(Caching Proxy)会预先将资源的副本(缓存)保存在代理服务器上。当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。回源则时指判断文件是否过期,去源地址获取新的。 - 透明代理
转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(Transparent Proxy)。反之,对报文内容进行加工的代理被称为非透明代理。
- 缓存代理
网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。
隧道:在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
第七章 确保 Web 安全的 HTTPS
HTTP缺点
-
通信使用明文(不加密),内容可能会被窃听。
原因:HTTP协议本身时没有加密功能。 -
不验证通信方的身份,因此有可能遭遇伪装。
原因:任何人携带凭证都可以发起请求。客户端不知道是否访问的是正确的服务端。服务端不知道返回的信息是否是真实的客户端。 -
无法证明报文的完整性,所以有可能已遭篡改。
原因:中间人攻击:篡改请求和响应。
HTTP+ 加密 + 认证 + 完整性保护 = HTTPS
HTTP通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替则为HTTPS。

- 加密
- 服务端把公钥给数字证书认证机构私钥加密,生成公钥证书。
- SSL引用该证书。
- 客户端通过请求拿到证书。通过数字证书公钥验证数字签名。确认服务器公钥真实性。
- 客户端使用服务器公钥加密报文发送
- 服务端使用服务器私钥解密报文

-
HTTPS的通信步骤

- 为什么不一直用https。
因为与纯文本通信相比,加密通信会消耗更多的CPU 及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到一台计算机上时,能够处理的请求数量必定也会随之减少。
第11章 Web 的攻击技术
- 针对 Web 应用的攻击模式
- 以服务器为目标的主动攻击
指攻击者通过直接访问 Web 应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。主动攻击模式里具有代表性的攻击是 SQL注入攻击和 OS 命令注入攻击。
- 以服务器为目标的主动攻击
- 以服务器为目标的被动攻击
指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访问发起攻击。
被动攻击通常的攻击模式如下所示。
步骤 1: 攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的 HTTP 请求。
步骤 2: 当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱。
步骤 3: 中招后的用户浏览器会把含有攻击代码的 HTTP 请求发送给作为攻击目标的 Web 应用,运行攻击代码。
步骤 4: 执行完攻击代码,存在安全漏洞的 Web 应用会成为攻击者的跳板,可能导致用户所持的Cookie 等个人信息被窃取,登录状态中的用户权限遭恶意滥用等后果。
被动攻击模式中具有代表性的攻击是跨站脚本攻击和跨站点请求伪造。
- 因会话管理疏忽引发的安全漏洞
- 跨站点请求伪造

- 跨站点请求伪造
- 因输出值转义不完全引发的安全漏洞
- 跨站脚本攻击
动态创建的 HTML部分有可能隐藏着安全漏洞。
下图网站通过地址栏中 URI 的查询字段指定 ID,即相当于在表单内自动填写字符串的功能。而就在这个地方,隐藏着可执行跨站脚本攻击的漏洞。



- 跨站脚本攻击
-
SQL 注入攻击
通过sql的拼接生成与原意不同的sql语句 -
OS 命令注入攻击
-
HTTP 首部注入攻击
设置请求头属性

设置响应内容为指定内容

-
目录遍历攻击

- 因设置或设计上的缺陷引发的安全漏洞
- 开放重定向

- 开放重定向
- 其他安全漏洞
- 点击劫持
指利用透明的按钮或链接做成陷阱,覆盖在Web 页面之上。然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段。这种行为又称为界面伪装(UI Redressing)。 - DoS 攻击
集中利用访问请求造成资源过载,资源用尽的同时,实际上服务也就呈停止状态。
通过攻击安全漏洞使服务停止
- 点击劫持
个人记录,有买书籍,侵删。