第 2 章 : HTTP协议

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:服务不可用)