deepwzh的技术笔记
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • 杂项
  • Windows UI 自动化方案调研 (2026)v2
  • Nginx
  • 首页
  • Protobuf
  • 学习资料
  • 杂项
  • Ldap
  • 编译原理
  • 分布式

    • 分布式
    • Raft 算法
  • 开发工具

    • 开发工具
    • cloc
    • Vscode
    • 工具箱
    • Visual Studio

      • Visual Studio
      • C++ 相关
      • Visual Studio 基本知识
  • 软件设计

    • 软件设计
    • MVC
    • 领域驱动设计
    • PO、DO、DTO、VO
    • 高内聚低耦合
  • 消息队列

    • 消息队列
    • Celery
    • Kafka
    • RabbitMQ
  • 设计模式

    • 设计模式
    • 控制反转和依赖注入
    • 七大原则
  • 网络安全

    • 网络安全
    • 请求签名
    • CSRF
    • XSS
  • 版本管理工具

    • 版本管理工具
    • Git

      • Git
      • Git get 私有仓库报错
      • Github 加速
      • Clone
      • Git pull 出现 hint 时的解决方案
      • 修改提交记录的作者信息
      • Git mergr
  • 组成原理

    • 组成原理
    • CPU

请求签名

为什么需要签名

  • 签名用于防止 HTTP 请求的篡改,保证 HTTP 请求的完整性

签名算法设计原则

签名就是将原始内容生成一个 hash,传给服务端;服务端自己生成一遍 hash 进行比对

需要防止什么内容篡改,就需要把这个内容加入到原始内容中

根据需求的不同,要签名的原始内容可以包括:

  • URL
  • 查询参数
  • 请求体
  • 请求头
  • 请求时间

请求时间有助于防止**重放攻击,**比如限定请求两秒内过期

常用签名算法

  • HMAC 即一个摘要算法 +key,更标准化一些

摘要算法有以下几种选择:

  • MD5 MD5 近年被研究存在弱点,发现容易出现碰撞攻击,安全性需求高的地方不推荐使用
  • SHA256 使用了更高位数的 SHA 算法,更为安全
Prev
网络安全
Next
CSRF