目录
第1章 了解Web及网络基础
1.1 TCP/IP简介
TCP/IP是互联网相关的各类协议族的总称
TCP/IP分为4个层
- 应用层:决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各类通用的应用服务。例如FTP(文件传输协议)、DNS(域名系统)。HTTP协议也属于该层
- 传输层:对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。有两个协议:TCP(传输控制协议)、UDP(用户数据报协议)
- 网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的传输线路到达对方计算机,并把数据包传送给对方
- 链路层:处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网络适配器等等可见部分。硬件上的范畴均在链路层的作用范围之内
1.2 TCP/IP 通信传输流
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装。
1.3 URI 和 URL
URI(Uniform Resource Identifier):统一资源标识符
URL(Uniform Resource Locator):统一资源定位符
绝对 URI 的格式:
第2章 简单的 HTTP 协议
在两台计算机之间使用 HTTP 协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。
2.1 请求报文
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。
2.2 响应报文
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
2.3 告知服务器意图的 HTTP 方法
在这里列举的众多方法中,LINK 和 UNLINK 已被 HTTP/1.1 废弃,不再支持。
2.4 使用 Cookie 的状态管理
HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。
保留无状态协议这个特征的同时又要解决类似的矛盾问题,于是引入
了 Cookie 技术。Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
- 没有 Cookie 信息状态下的请求
- 存有 Cookie 信息状态)的请求
第3章 HTTP 报文内的 HTTP信息
3.1 HTTP 报文
用于 HTTP 协议交互的信息被称为 HTTP 报文。
- 请求报文及响应报文的结构
- 请求报文和响应报文的实例
第4章 返回结果的 HTTP 状态码
状态码类别
- 200 OK 表示从客户端发来的请求服务端被正常处理了
- 204 NO Content 表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外也不允许返回任何实体的主体。比如,返回204响应,浏览器显示的页面不发生更新。一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用
- 206 Partial Content 表示客户端进行了范围请求,而服务器成功执行了这部分GET请求。响应报文中包含由Content-Range指定范围的实体内容
- 301 Moved Permanently 永久重定向。表示请求的资源已被分配了新的URI,以后应使用资源现状所指的URI,也就是Location首部字段提示的URI
- 302 Found 临时重定向。表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问
- 303 See Other 表示请求的资源存在着另一个URI,应使用GET方法定向获取。303状态码明确表示应当用GET请求获取资源
- 304 Not Modified 表示请求客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足条件的情况。返回时,不包含任何响应的主体部分。304虽然被划在3XX,但与重定向没有关系
- 307 Temporary Redirect 临时重定向。与302一样,但不会从POST变成GET
- 400 Bad Request 表示报文中存在语法错误。需修改请求的内容后在再次发送请求
- 401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息。返回含有401的响应必须包含一个适用于被请求资源的WWW-Authenticate首部用以质询用户信息。当浏览器初次接收到401响应,会弹出认证用的对话窗口
- 403 Forbidden 表示请求资源的访问被服务器拒绝了。未获得文件系统的访问授权,访问权限出现问题等可能发生403错误
- 404 Not Found 表示服务器无法找到请求的资源
- 500 Internal Server Error 表示服务器端在执行请求时发生错误
- 503 Service Unavailable 表明服务器暂时处于超负荷或正在停机维护。
第5章 与 HTTP 协作的 Web 服务器
5.1 代理
代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不改变请求 URI,会直接发送给前方持有资源的目标服务器。
5.2 网关
利用网关可以由 HTTP 请求转化为其他协议通信。
5.3 隧道
隧道可按要求建立起一条与其他服务器的通信线路,届时使用 SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。
第6章 HTTP 报文首部
- 通用首部字段
- 请求首部字段
- 响应首部字段
- 实体首部字段
第7章 确保 Web 安全的HTTPS
HTTP+ 加密 + 认证 + 完整性保护=HTTPS
7.1 解释
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。
通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通信,再由 SSL和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。
7.2 HTTPS 的安全通信机制
7.3 Http和Https的各自缺点
http缺点:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
https缺点:
- 其中一个原因是,因为与纯文本通信相比,加密通信会消耗更多的CPU 及内存资源。
- 要进行 HTTPS 通信,证书是必不可少的,需要一大笔花费。
第8章 确认访问用户身份的认证
- BASIC 认证
- DIGEST 认证
- SSL 客户端认证
- 基于表单认证
输入已事先登录的用户 ID(通常是任意字符串或邮件地址)和密码等登录信息后,发送给 Web 应用程序,基于认证结果来决定认证是否成功。
第9章 基于 HTTP 的功能追加协议
第10章 构建 Web 内容的技术
第11章 Web 的攻击技术
目前,来自互联网的攻击大多是冲着 Web 站点来的,它们大多把Web 应用作为攻击目标。
11.1针对 Web 应用的攻击模式
- 主动攻击
主动攻击(active attack)是指攻击者通过直接访问 Web 应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源
- 被动攻击
被动攻击(passive attack)是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标 Web 应用访问发起攻击。