防止篡改参数签名请求携带参数AccessKey和Sign(开发者)

来源:blog.csdn.net/qq_18495465/article/details/79248608_

接口安全问题

AccessKey&SecretKey(开放平台)请求身份

给开发者分配一个AccessKey(开发者ID,保证只有一)和SecretKey(用于接口加密,保证不容易用完,生成算法不容易猜到)。

防篡改

参数签名

请求携带参数AccessKey和Sign,只有合法身份AccessKey和正确的签名Sign才能释放。这解决了认证和参数篡改的问题。即使请求参数被劫持,由于无法获取SecretKey(仅用于本地加密,不参与网络传输),因此无法伪造合法请求。

重放攻击

虽然解决了请求参数被篡改的隐患,但仍然存在重复利用请求参数伪造二次请求的隐患。

时间戳+随机数方案

nonce 是指用于标识每个签名请求的唯一随机字符串。通过为每个请求提供一个唯一标识符,服务器能够防止请求被多次使用(记录所有使用的 nonce 以防止它们被使用两次)。

但是,服务器永久存储所有收到的 nonce 是非常昂贵的。您可以使用时间戳来优化 nonce 的存储。

假设客户端和服务器可以有最大 15 分钟的时间差,同时跟踪服务器上记录的 nonce 集。当有新请求进来时,首先检查携带的时间戳是否在 15 分钟以内。如果超过时间范围,则拒绝,然后查询携带的nonce。如果有一个现有的集合,它将被拒绝。否则,记录nonce并删除集合中时间戳大于15分钟的nonce(可以使用redis的expire增加一个nonce,设置其超时时间为15分钟)。

完成

请求接口:

客户

服务器

Token&AppKey (APP)

在APP开放API接口的设计中,由于大部分接口都涉及到用户的个人信息和产品的敏感数据,因此需要对这些接口进行认证。为了安全起见,用户暴露明文密码的次数越少越好。但是,请求之间的客户端-服务器交互是无状态的,也就是说,当涉及到用户状态时,每个请求都需要身份验证信息。

Token认证Token+AppKey签名验证

与上述开发平台的验证方法类似,将AppKey(密钥,用于接口加密,不参与传输)分配给客户端接口签名错误是什么意思,将AppKey和所有请求参数组合成一个源字符串,根据签名算法,并发送带有签名值的请求到服务器进行验证。关注公众号开始写作,回复pdf,下载你需要的各类学习资料。

这样接口签名错误是什么意思,即使 Token 被劫持,对方在不知道 AppKey 和签名算法的情况下,也无法伪造请求和篡改参数。结合上述重传攻击方案,即使请求参数被劫持,也不可能伪造第二次重复请求。

完成

登录和注销请求

登录和注销流程跟进请求

客户

服务器

服务器进程

(结尾)

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论