gpt4 book ai didi

c# - 签署 API 请求时应包括的内容

转载 作者:行者123 更新时间:2023-11-30 20:06:18 31 4
gpt4 key购买 nike

如果我有一个作为 API 请求发送的复杂对象(例如下面的订单),我应该在生成签名时包括所有属性还是应该只使用一个子集?

我问是因为我不清楚,而且从查看其他 API 的请求参数来看,请求参数是扁平和简单的

public class Order
{
public string Id { get; set; }
public string ClientIdentifier { get; set; }
public IEnumerable<OrderItems> OrderItems { get; set; }
public long timestamp { get; set; }
public string signature { get; set; }
}

public class OrderItems
{
public string ItemId { get; set; }
public string Name { get; set; }
public IEnumerable<decimal> PriceBands { get; set; }pes
more types



}

and so on ....

最佳答案

您首先需要了解消息的签名阻止了什么,以了解请求中应包含哪些数据。以下列出了签署请求可阻止攻击者执行的 2 项主要操作。

  1. 对于签名的请求,密码是安全的,攻击者不能使用查询中的信息来签署另一个请求。如果攻击者可以看到发送到服务器的请求,这将很有帮助。
  2. 攻击者无法在不使签名失效的情况下修改请求中用于生成签名的任何数据,从而导致请求被服务器拒绝。

2 号有一个问题。它仅有助于保护作为签名一部分的数据。如果您遗漏任何数据,攻击者可能会更改该数据并发送与您发送的消息不同的消息。这就是签署请求时需要包含所有请求数据的原因:完整的 URI,包括域、 header 、查询字符串参数,以及任何发布的数据,例如 XML 或 JSON。

关于c# - 签署 API 请求时应包括的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950812/

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