Http协议基础-明文
特点
http协议本身有以下特点:
七层的应用层协议。
是明文协议
- 无内建的机密性安全机制
- 嗅探或代理阶段可查看全部明文信息
- https只能提高传输层安全
中间人基于https侦听劫持一样可以实现中间人攻击
https劫持
访问https网站时会发送相应的请求,服务器端会将公钥证书传给客户端,客户端会生成一个对称密钥用于加密之后所有的数据,对称密钥不会传输,会用证书里面服务器的公钥将其加密,然后发给服务器端,服务器有对应的私钥,可以得到相应数据,每次会话的对称密钥都是随机的,而且加密强度很大,而且存在时间短,安全性高。但是攻击者会在本机生成一个伪证书,与服务器的区别是私钥不同,其他是相同的,会将自身本身的公钥发给被劫持者的客户端,然后被劫持者会生成这个假数据的对称密钥,由于传过去的公钥是劫持者的公钥,因此劫持者用本身的私钥就可以对数据进行解密,从而进行了https劫持。
无状态
- 每一次客户端和服务器端的通信都是独立的过程
- WEB应用需要跟踪客户端会话(多部通讯)
- 不使用cookie的应用,客户端每次请求都要重新身份验证(不现实)
- Session用于在于用户身份验证后跟踪用户行为踪迹
- 提高用户体验,但增加了攻击向量
Cycle
- 请求/响应
一个请求一个响应叫做一个cycle,是完整通信最小的一个单元,
- 客户端发送的时候和服务器响应的时候都是有head这个概念。
重要的header
- set-cookie:服务器发给客户端的sessionID(会有被窃取的危险)
- content-length:响应body部分的字节长度,可以在暴力破解中发挥很大用途
- location:重定向用户到另一个页面,可识别身份认证后允许访问的页面
- cookie:客户端发回给服务器证明用户状态的信息(头:值成对出现)
- referrer:发起新请求之前用户位于那个页面,服务器基于此头的安全限值很容易被修改绕过
状态码
- 服务端响应的状态码表示响应的结果类型(五大类50多个具体响应码)
- 100s:服务器响应的信息,通常表示服务器还有后续处理,很少出现
- 200s:请求被服务器成功接收并处理后返回的响应结果
- 300s:重定向,通常在身份认证成功后重定向到一个安全页面(301/302)
- 400s:表示客户端请求错误
- 401:需要身份要在
- 403:拒绝访问
- 404:目标未发现
- 500s:服务器内部错误(503:服务不可用)