请求签名
为什么需要签名
- 签名用于防止 HTTP 请求的篡改,保证 HTTP 请求的完整性
签名算法设计原则
签名就是将原始内容生成一个 hash,传给服务端;服务端自己生成一遍 hash 进行比对
需要防止什么内容篡改,就需要把这个内容加入到原始内容中
根据需求的不同,要签名的原始内容可以包括:
- URL
- 查询参数
- 请求体
- 请求头
- 请求时间
请求时间有助于防止**重放攻击,**比如限定请求两秒内过期
常用签名算法
- HMAC 即一个摘要算法 +key,更标准化一些
摘要算法有以下几种选择:
- MD5 MD5 近年被研究存在弱点,发现容易出现碰撞攻击,安全性需求高的地方不推荐使用
- SHA256 使用了更高位数的 SHA 算法,更为安全