Noe*_*oel 2 c# authorization oauth
如果我有一个作为API请求发送的复杂对象(例如下面的Order),我应该在生成签名时包含所有属性还是仅使用一个子集?
我问,因为我不清楚,从查看其他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 ....
Run Code Online (Sandbox Code Playgroud)
首先,您需要了解消息的签名会阻止哪些数据应该包含在请求中.这是签署请求阻止攻击者能够做的两件主要事情的列表.
2号有一个问题.它仅有助于保护作为签名一部分的数据.如果您留下任何数据,攻击者可以更改该数据并发送与您发送的消息不同的消息.这就是在签署请求时需要包含所有请求数据的原因:完整URI包括域,标头,查询字符串参数以及任何发布的数据(如XML或JSON).