gpt4 book ai didi

oauth-2.0 - Oauth 2 - 参数排序和签名完整性

转载 作者:行者123 更新时间:2023-12-04 15:14:33 24 4
gpt4 key购买 nike

我有两个问题:

Q1:为什么 OAuth2 需要对 params 进行排序和编码(对于 2-legged)?

它只需要担心给定数据(查询字符串)两端的匹配签名。

我们可以只检查使用查询字符串生成的签名。(例如?a=1&b=2)。由于签名是基于只有客户端和提供者知道的 key 生成的,所以我们只能考虑没有任何排序/编码的查询字符串。

那么,进行排序/编码然后创建签名的优势是什么?

Q2:此签名如何使我免于中间人攻击?

如果我必须从客户端向我的服务器发出这样的请求:

increaseUserPoints?userId=1&pointsToAdd=5&appId=x&token=XYZ

现在 token XYZ 将始终相同,因此黑客可以继续发布相同的请求以增加 points .由于从给定的 appId 生成的 token 是一样的,服务器将允许这样做。本案如何处理?

最佳答案

Q1:对查询参数进行排序可以让 HMAC 保持理智。

假设您有两个参数:“pointsToAdd”和“appId”。使用查询字符串 pointsToAdd=X&appID=yappID=y&pointsToAdd=X 创建一个不同的 HMAC .因为您和服务器都需要生成相同的 HMAC 来验证具有无序查询参数的请求是否会失败。

Q2:这使您免于受到攻击,因为只有您和服务器知道如何签署您的请求。

你有一个 secret key ,只有你和服务器知道它。此 key 签署请求。如果 HMAC 与此 key 不匹配,则请求失败。

由于所有参数都已用于创建 HMAC,因此请求不会受到 MITM 攻击——黑客无法更改、添加或删除任何查询参数,或者服务器在尝试授权但请求失败时会产生不同的 HMAC。

关于oauth-2.0 - Oauth 2 - 参数排序和签名完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com