第四章 返回结果的HTTP状态码
HTTP状态码负责表示客户端HTTP请求的返回结果,标记服务器端处理是否正常,通知出现的错误等;
placeholder | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息状态码) | 接收的请求正在处理 |
2XX | Succ(成功状态码) | 请求成功处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 客户端无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
其中 304,200,400,404,500出现的比较多; 305使用代理
第五章 与HTTP协作的Web服务器
用单台虚拟主机实现多个域名
HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点;即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器。
通信数据转发程序
代理
接收服务器的请求并转发给服务器,同时也接受服务器的响应返回给服务器。
使用代理服务器的理由:
利用缓存技术减少带宽的流量,组织内部针对网站的控制,以获取访问日志为主要目的等。
代理按照使用方法的分类:
-
缓存代理:代理转发响应式,缓存代理会先将资源的副本保存在代理服务器上。
-
透明代理:转发请求或响应时,不对报文做任何加工的代理类型称为透明代理,反之则称为非透明代理。
##网关
接收客户端发送过来的请求并对其进行处理。
网关的工作机制和代理十分相似。而且网关能为通信线路上的服务器提供非HTTP协议服务。利用网关还能提高通信的安全性,因为在客户端与网关之间的通信线路上加密已确保连接的安全。
隧道
在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
隧道可按照要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身并不会去解析HTTP请求,隧道会在通信双方断开连接时结束。
第六章 HTTP首部(头部)
HTTP报文首部
HTTP请求报文:
在请求中,HTTP报文由方法,URL,HTTP版本和HTTP首部字段等构成;
HTTP响应报文:
在响应中,HTTP报文游HTTP版本,状态码,HTTP首部三个部分组成。
HTTP首部字段
在客户端和服务器之间以HTTP协议进行通信的过程中,无论请求还是响应都会使用到首部字段,它能起到传递额外重要信息的作用。
-
**通用首部字段(General Header Fields):**请求报文和响应报文两方都会使用的首部;
-
请求首部字段(Request Header Fields): 从客户端向服务器发送请求报文时使用的首部。补充了请求的附加内容,客户端的信息,响应内容相关的优先级等信息。
-
响应首部字段(Response Header Fields) 从服务器向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
-
实体首部字段(Entity Header Fields): 针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
HTTP首部字段一览表
通用首部字段
首部字段名 | 说明 |
---|---|
Cache-Control | 控制缓存的行为 |
Connection | 逐跳首部,连接的管理 |
Date | 创建报文的日期时间 |
Pragna | 报文指令 |
Trailer | 报文末端的首部一览 |
Transfer-Encoding | 指定报文主体的传输编码方式 |
Upgrade | 升级为其他协议 |
Via | 代理服务器的相关信息 |
Warning | 错误通知 |
请求首部字段
首部字段名 | 说明 |
---|---|
Accept | 用户代理可处理的媒体类型 |
Accept-Charset | 优先的字符集 |
Accept-Encoding | 优先的内容编码 |
Accept-Language | 优先的语言(自然语言) |
Authorization | Web认证信息 |
Expect | 期待服务器的指定行为 |
From | 用户的电子邮箱地址 |
Host | 请求资源所在服务器 |
if-Match | 比较实体标记(ETag) |
if-Modified-Since | 比较资源的更新时间 |
if-None-Match | 比较实体标记(与if-Match相反) |
if-Range | 资源为更新时发送实体Byte的范围请求 |
if-Unmodified-Since | 比较资源的更新时间(与if-Modified-Since相反) |
Max-Forwards | 最大传输逐跳数 |
Proxy-Authorization | 代理服务器要求客户端的认证信息 |
Range | 实体字节范围请求 |
Referer | 对请求中的URL的原始获取方法 |
TE | 传输编码的优先级 |
User-Agent | HTTP客户端程序的信息 |
(没完哦)
第七章 确保Web安全的HTTPS
在HTTP协议中有可能存在信息窃听或身份伪装等安全问题,使用HTTPS通信机制可以有效地防止这些问题。
HTTP的缺点
-
通信使用明文(不加密),内容可能会被窃听;
-
不验证通信方的身份,因此可能遭遇伪装;
-
无法证明报文的完整性,所以可能已遭篡改。
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPS 并非是应用层的一种新协议。只是普通HTTP通信接口部分用SSL和TLS协议替代而已。
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。所以说SSL是当今世界上应用最为广泛的网络安全技术。
-
由于HTTPS需要做服务器、客户端双方加密及解密处理,因此会消耗CPU和内存等硬件资源;
-
和HTTP相比,SSL通信部分消耗网络资源。而SSL通信部分,又因为要对通信进行处理,所以时间上有延迟了;
-
和HTTP相比,网络负载和速度上会变慢2~100倍。
为什么不一直使用HTTPS?
-
一个原因与纯文本通信相比,加密通信会消耗更多的CPU及内存源,能够处理的请求数量必定会减少;
-
另一个原因,想要节约购买证书的开销也是原因之一(通常一年的授权需要数万日元[一万日元600左右人民币])。
因此,如果是是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信。
第八章 确认访问用户身份的认证
某些Web页面只想让特定的人浏览,或者干脆仅让本人可见,为了达到这个目的,必不可少的就是认证功能。
何为认证
- **密码:**只有本人才会知道的字符串信息;
- 动态令牌: 仅限本人持有的设备内显示的一次性密码;
- 数字证书: 仅限本人终端持有的信息;
- 生物认证: 指纹和虹膜等本人的生理信息;
- IC卡等: 仅限本人持有的信息。
HTTP/1.1 使用的认证方式
-
BASIC认证: 基本认证
-
DIGEST认证: 摘要认证
-
SSL客户端认证:
-
FormBase认证: 基于表单的认证
由于使用的便利性和安全性的问题,HTTP协议标准提供的BASIC认证和DIGEST认证几乎不怎么使用,另外SSL客户端认证虽然具有高度的安全等级,但因为导入及维护费用等问题,还尚未普及,认证多为给予表单认证。
Session管理及Cookie应用
第九章 HTTP的功能追加协议
虽然HTTP协议既简单又快捷,但是随着时代的发展,其功能使用上捉襟见肘的疲惫状态已经凸显。
消除HTTP瓶颈的SPDY
Google在2010年发布了SPDY,其开发目标旨在解决HTTP的性能瓶颈,缩进Web页面的加载时间(%50)。
HTTP的瓶颈
-
一条连接上只能发送一个请求;
-
请求只能从客户端开始,客户端不可以接受除响应意外的指令;
-
请求/响应首部未经压缩就发送,首部信息越多延迟愈大;
-
发送冗长的首部,每次互相发送相同的首部造成的浪费较多;
-
可任意选择数据压缩格式,非强制压缩发送;
Ajax的解决办法:
有效利用JavaScript和DOM的操作,以达到局部Web页面替换加载的异步通信手段。由于只更新一部分页面,响应中传输的数据量因此而减少。
Comet的解决办法:
通常服务器端接收到的请求,在处理完毕后就会立刻返回响应,但是为了,实现推送功能,Comet会先将响应置于挂起状态。当服务器有内容更新时,在返回该响应。因此,服务器一旦有更新,就可以立即反馈给客户端。
SPDY的设计与功能
SPDY没有完全改写HTTP协议,而是在TCP/IP的应用层与传输层之间通过新加会话层的形式运作。同时,烤炉到安全问题,SDPY规定通信中使用SSL。
-
多路复用流;
-
赋予请求优先级;
-
压缩HTTP首部;
-
推送功能;
-
服务器提示功能。
使用浏览器进行全双工通信的WebSocket
WebSocket技术主要是为了解决Ajax和Comet里XMLHttpRequest附带的缺陷所引起的问题。
WebSocket协议
一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。只要通信一确立,任意一方都可直接向对方发送报文。
Web服务器管理文件的WebDAV
WebDAV(基于万维网的分布式创作和版本控制)是一个可对Web服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。除了创建、删除文件的基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的枷锁功能,以及对文件内容修改的版本控制功能。
第十章 构建Web内容的技等术
-
HTML/CSS
-
JavaScript/DOM
-
JavaScript/DOM
第十一章 Web的攻击技术
针对Web站点的攻击技术
简单的HTTP协议本身并不存在安全性问题,因此协议本身几乎不会成为攻击的对象。
-
HTTP不具备必要的安全功能
-
在客户端即可篡改请求
-
以服务器为目的的主动攻击:SQL注入、OS命令注入
-
以服务器为目的的被动攻击:跨站脚本攻击、跨站点请求伪造
-
利用用户的身份攻击企业内部网络
-
HTTP首部注入攻击
-
邮件首部注入攻击
-
目录遍历攻击
-
远程文件包含漏洞