HTTP protocol introduction

HTTP 协议

HTTP协议属于应用层协议,其设计目的是为了方便文本内容的分享与发布。HTTP协议是Web资源共享的基础,与URL(文档地址定位符),HTML共同构建了Web世界。

HTTP协议属于点到点通信协议,请求访问资源的一端称为客户端,提供资源相应的一端称为服务器。

HTTP协议方法

  • GET:请求访问资源。
  • POST:传输主体内容。
  • PUT:传输内容,幂等传输。
  • HEAD: 获得报文首部,用于确认资源有效性和更新日期。
  • DELETE: 删除内容。
  • OPTIONS: 询问资源支持方法。
  • TRACE:追踪路径,用于计算客户端到服务器端的跳数。
  • CONNECT: 要求用socket协议连接代理。

HTTP方法本身是无状态协议,为了支持复杂有状态场景,引入了Cookie技术,确保认证客户端通信的上下文是连续的。

HTTP状态码

类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

HTTP协议架构中的转发功能节点

  • 代理:代理服务器的基本行为是接收客户端发送的请求转发给其他服务器,不改变请求URI。分为两类:
    1. 缓存代理:缓存内容。
    2. 透明代理:纯粹内容转发,不做缓存。
  • 网关:网关为通信链路上的服务器提供非HTTP协议连接,例如与信用卡结算系统联动,数据库联动等。
  • 隧道:隧道的建立能够确保客户端与服务器之间安全的通信。也能扩展HTTP通信协议,例如支持推送功能等等。

HTTPS

HTTP协议的缺点:

  1. 明文信息会被窃听;
  2. 无法验证通信方身份,会被伪装;
  3. 无法验证报文的完整性,会被篡改。

HTTP over SSL/TSL

SSL/TSL协议独立与HTTP协议,存在于HTTP和TCP协议之间,在建立HTTP连接之前,先建立SSL通信机制,交换加密密钥,从而在HTTP通信报文可以进行加密传输。

HTTPS 协议通信握手/分手协议步骤:

HTTPS

握手主要分为4个阶段:

  1. SSL证书请求,及公钥获取。<= 由于非对称加密机制的效率较低,安全性高,只用作密钥交互。
  2. 客户端密钥加密发送。
  3. 服务器端密钥确认。
  4. 数据传输… <= 数据传输阶段的加密是基于协商确定的对称密钥发送,效率较高。

WebSocket协议

Web浏览器支持的全双工通信协议,在HTTP部首加入upgrade:websocket字段,服务器通过返回状态码101 swtiching protocols响应连接,一旦服务器与客户端建立WebSocket协议的通信连接,之后所有的通信都用这个专用协议进行。

  • 推送功能: 服务器可以直接发送数据到客户端。
  • 减少通信量:保持连接的状态减少HTTP协议的连接开销。

用户认证问题

HTTP/1.1常见的认证方式如下:

  • BASIC认证:直接提交用户名密码完成认证。
    BASIC
  • DIGEST认证:客户端根据服务器端的质询码生成响应码完成认证。
    DIGEST
  • SSL客户端认证:凭借HTTPS的客户端认证证书完成认证。
  • FormBase认证:在用户登录信息以表单形式提交后,服务器端发放Session ID用于用户认证状态的绑定和保持。
    FORM
  • Kerberos认证:
  • NTLM认证:
  • SSO认证:

Web安全问题

  • 跨站脚本工具XSS:通过执行非法HTML标签/JS脚本进行攻击。
    1. 表单中插入非法标签执行JS脚本。
    2. 基于用户Cookie的窃取攻击
  • SQL注入攻击:通过加入SQL结束符,强制加入SQL语句执行。
  • OS命令攻击:通过Shell脚本注入执行系统命令。
  • HTTP部首注入攻击:通过访问URL加入换行符,注入HTTP首部字段进行攻击。
    1. Cookie设置字段生效。
    2. HTTP响应截断攻击,强制显示伪造内容。
  • 邮件首部注入攻击:
    1. BCC邮件泄露。
  • 目录遍历攻击: 访问无疑公开的文件目录。
  • 远程文件包含漏洞:引入其他包,例如System包进行代码污染。