图解HTTP
一.了解Web及网络基础
1.TCP/IP分层
2.IP,TCP和DNS
3.URI和URL
二.简单的HTTP协议
1.请求报文
请求报文是由请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成的
2.HTTP是不保存状态的协议
- HTTP协议本身不对请求和相应之间的通信状态进行保存,协议对于发送过的请求或响应都不做持久化处理
- HTTP/1.1为了实现期望的保存状态的功能,引入了Cookie技术
3.告知服务器意图的HTTP方法
- GET:请求
- POST:提交
- PUT:上传文件(自身不带验证机制,可以配合Web应用的验证机制或者是架构采用REST标准)
- HEAD:获得报文首部
- DELETE:删除文件
- OPTIONS:询问支持的方法
- TRACE:追踪路径(可以查询发送出去的请求是怎么被加工修改的[基本不用,容易引发XSS攻击])
- CONNECT:要求用隧道协议链接***
4.Cookie相关
三.HTTP报文内的HTTP信息
1.报文
- HTTP报文大致可以分为报文首部和报文主体两块
2.编码提升传输效率
实体的内容由实体首部和实体主体组成,作为请求或相应的有效载荷数据被传输
报文是HTTP通信中的基本单位
传输中的压缩:gzip,compress,deflate,identity
分割发送的分块传输编码
3.内容协商返回最合适的内容
字符集,编码方式,内容的语言,接收的语言
四.返回结果的HTTP状态码
1.2XX
- 200 OK 表示从客户端发来的请求在服务器端被正常处理了
- 204 No Content 服务器接收的请求已经成功处理,但是在返回的相应报文中不包含实体的主体部分
- 206 Partial Content 客户端进行了范围请求,而服务器成功的执行了这部分的GET请求
2.3XX
- 301 Moved Permanently 永久性重定向
- 302 Found 临时性的重定向[301,302标准是禁止将POST方法改变为GET方法的,但是实际使用的时候都会这样做]
- 303 See Other 由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源[当301,302,303响应状态码返回的时候,几乎所有的浏览器都会将POST改为GET,并删除请求报文内的主体,之后请求会自动再次发送]
- 304 Not Modified 资源已经找到,但是不符合条件请求
3.4XX
- 400 Bad Request 表示请求报文中存在语法错误
- 401 Unauthorized 如果已经有一次请求则认证失败,否则需要认证
- 403 Forbidden 对请求资源的访问被服务器拒绝了
- 404 Not Found 服务器上无法找到请求的资源
4.5XX
- 500 Internal Server Error 服务器端在执行请求的时候发生了错误,或者是Web应用存在的bug或者是临时的故障
- 503 Service Unavailable 服务器暂时处于超负荷或者是正在进行停机维护
5.注意:很多状态码和状态的不一致
五.与HTTP协作的Web服务器
1.用单台的虚拟主机实现多个域名
2.通信数据转发程序:***,网关,隧道
- ***:接收由客户端发送的请求并转发给服务器[可以作为缓存或者是对报文进行修改(科学surf the internet)]
- 网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求的时候就像是自己拥有源服务器一样对请求进行处理[可以提高安全性]
- 隧道:保持相隔甚远的客户端和服务器两者之间通信连接的应用程序[建立安全连接]
六.HTTP首部
1.HTTP报文首部
- HTTP请求报文
- HTTP相应报文
2.HTTP首部字段
- HTTP首部字段传递重要信息
- HTTP首部字段结构
- 如果HTTP首部字段重复了:根据浏览器内部的逻辑不同,有的会优先处理第一次出现的首部字段,有的会优先处理最后出现的首部字段
- 逐跳首部与端到端首部
3.HTTP/1.1通用首部字段
- no-cache代表不缓存过期的资源,缓存会向源服务器进行有效期确认之后处理资源。no-store才是真正的不进行缓存
七.确保Web安全的Https
1.HTTP的缺点
- 通信使用明文,内容可能被窃取
- 不验证通信双方的身份,有可能遭遇伪装
- 无法证明报文的完整性,可能遭遇篡改
2.HTTPS
- 当使用ssl的时候,则演变为先和ssl进行通信,然后和tcp进行通信
- 相互交换秘钥的公开密钥加密技术
- 仅仅对需要信息隐藏的部分进行加密,以节约资源
八.确认访问用户身份的认证
1.谈谈HTTPS
2.Session ID可以放在cookie中
九.基于HTTP的功能追加协议
1.HTTP的瓶颈
- 一条连接上只能发送一个请求
- 请求只能从客户端开始
- 请求/相应首部未经压缩就直接发送
- 发送冗余的数据
- 可任意选择数据压缩格式
2.Ajax
3.WebSocket
十.构建Web内容的技术
1.CGI是将请求转发给CGI程序处理的一种机制
2.JSON
十一.Web的攻击技术
1.针对Web应用的攻击模式
- 主动攻击:通过直接访问Web应用,将攻击代码传入的攻击模式
- 被动攻击:攻击者不直接对Web进行攻击
2.攻击方式
- XSS攻击
- 对用户Cookie窃取的攻击
- SQL注入
- OS命令注入攻击
- HTTP首部注入攻击
- 邮件首部注入攻击
- 开放重定向攻击
3.因会话管理疏忽引发的安全漏洞
- 会话劫持
- 会话固定攻击
- 跨站点请求伪造
- 密码破解
- 点击劫持
- Dos攻击